Used form helper for forgot password form

* Removed unused idents
* Isolated form logic
* Added an id around forgot password for styling purposes
This commit is contained in:
Alex Kardos 2016-03-09 19:40:47 -07:00
parent 7faecc8952
commit 0c0cb12a10

View File

@ -107,6 +107,7 @@ data EmailCreds site = EmailCreds
, emailCredsEmail :: Email , emailCredsEmail :: Email
} }
data ForgotPasswordForm = ForgotPasswordForm { forgotEmail :: Text }
data PasswordForm = PasswordForm { passwordCurrent :: Text, passwordNew :: Text, passwordConfirm :: Text } data PasswordForm = PasswordForm { passwordCurrent :: Text, passwordNew :: Text, passwordConfirm :: Text }
data UserForm = UserForm { email :: Text } data UserForm = UserForm { email :: Text }
data UserLoginForm = UserLoginForm { loginEmail :: Text, loginPassword :: Text } data UserLoginForm = UserLoginForm { loginEmail :: Text, loginPassword :: Text }
@ -421,18 +422,38 @@ getForgotPasswordR = forgotPasswordHandler
-- Since: 1.2.6 -- Since: 1.2.6
defaultForgotPasswordHandler :: YesodAuthEmail master => AuthHandler master Html defaultForgotPasswordHandler :: YesodAuthEmail master => AuthHandler master Html
defaultForgotPasswordHandler = do defaultForgotPasswordHandler = do
tp <- getRouteToParent ((_,widget),enctype) <- lift $ runFormPost forgotPasswordForm
email <- newIdent toParent <- getRouteToParent
lift $ authLayout $ do lift $ authLayout $ do
setTitleI Msg.PasswordResetTitle setTitleI Msg.PasswordResetTitle
[whamlet| [whamlet|
<p>_{Msg.PasswordResetPrompt} <p>_{Msg.PasswordResetPrompt}
<form method="post" action="@{tp forgotPasswordR}"> <form method=post action=@{toParent forgotPasswordR} enctype=#{enctype}>
<div id="registerForm"> <div id="forgotPasswordForm">
<label for=#{email}>_{Msg.ProvideIdentifier} ^{widget}
<input ##{email} type=text name="email" width="150" autofocus> <button .btn>_{Msg.SendPasswordResetEmail}
<button .btn>_{Msg.SendPasswordResetEmail}
|] |]
where
forgotPasswordForm extra = do
(emailRes, emailView) <- mreq emailField emailSettings Nothing
let forgotPasswordRes = ForgotPasswordForm <$> emailRes
let widget = do
[whamlet|
#{extra}
^{fvLabel emailView}
^{fvInput emailView}
|]
return (forgotPasswordRes, widget)
emailSettings =
FieldSettings {
fsLabel = SomeMessage Msg.ProvideIdentifier,
fsTooltip = Nothing,
fsId = Just "forgotPassword",
fsName = Just "email",
fsAttrs = [("autofocus", "")]
}
postForgotPasswordR :: YesodAuthEmail master => HandlerT Auth (HandlerT master IO) TypedContent postForgotPasswordR :: YesodAuthEmail master => HandlerT Auth (HandlerT master IO) TypedContent
postForgotPasswordR = registerHelper True forgotPasswordR postForgotPasswordR = registerHelper True forgotPasswordR