From 76fc5887f96dc698295c744539678e025838502b Mon Sep 17 00:00:00 2001 From: Alex Kardos Date: Wed, 17 Feb 2016 20:39:09 -0700 Subject: [PATCH] Fixed registerHandler CSRF issue The default register handler for email authentication didn't provide a CSRF token. I provided one by using a monadic form helper. --- yesod-auth/Yesod/Auth/Email.hs | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/yesod-auth/Yesod/Auth/Email.hs b/yesod-auth/Yesod/Auth/Email.hs index 1b94c411..6a3663ff 100644 --- a/yesod-auth/Yesod/Auth/Email.hs +++ b/yesod-auth/Yesod/Auth/Email.hs @@ -107,6 +107,8 @@ data EmailCreds site = EmailCreds , emailCredsEmail :: Email } +data UserForm = UserForm { email :: Text } + class ( YesodAuth site , PathPiece (AuthEmailId site) , (RenderMessage site Msg.AuthMessage) @@ -299,18 +301,37 @@ getRegisterR = registerHandler -- Since: 1.2.6 defaultRegisterHandler :: YesodAuthEmail master => AuthHandler master Html defaultRegisterHandler = do - email <- newIdent - tp <- getRouteToParent + ((f,widget),e) <- lift $ runFormPost registrationForm + toParentRoute <- getRouteToParent lift $ authLayout $ do setTitleI Msg.RegisterLong [whamlet|

_{Msg.EnterEmail} -

+
-