Merge pull request #1660 from charukiewicz/register-helper
Add methods to YesodAuthEmail that allow custom flow after registration/password reset
This commit is contained in:
commit
b4c613f766
@ -1,5 +1,10 @@
|
||||
# ChangeLog for yesod-auth
|
||||
|
||||
## 1.6.9
|
||||
|
||||
* Added `registerHelper` and `passwordResetHelper` methods to the `YesodAuthEmail` class, allowing for customizing behavior for user registration and forgot password requests [#1660](https://github.com/yesodweb/yesod/pull/1660)
|
||||
* Exposed `defaultRegisterHelper` as default implementation for the above methods
|
||||
|
||||
## 1.6.8.1
|
||||
|
||||
* Email: Fix typo in `defaultEmailLoginHandler` template [#1605](https://github.com/yesodweb/yesod/pull/1605)
|
||||
|
||||
@ -113,6 +113,8 @@ module Yesod.Auth.Email
|
||||
, defaultRegisterHandler
|
||||
, defaultForgotPasswordHandler
|
||||
, defaultSetPasswordHandler
|
||||
-- * Default helpers
|
||||
, defaultRegisterHelper
|
||||
) where
|
||||
|
||||
import Yesod.Auth
|
||||
@ -385,6 +387,35 @@ class ( YesodAuth site
|
||||
-> AuthHandler site TypedContent
|
||||
setPasswordHandler = defaultSetPasswordHandler
|
||||
|
||||
|
||||
-- | Helper that controls what happens after a user registration
|
||||
-- request is submitted. This method can be overridden to completely
|
||||
-- customize what happens during the user registration process,
|
||||
-- such as for handling additional fields in the registration form.
|
||||
--
|
||||
-- The default implementation is in terms of 'defaultRegisterHelper'.
|
||||
--
|
||||
-- @since: 1.6.9
|
||||
registerHelper :: Route Auth
|
||||
-- ^ Where to sent the user in the event
|
||||
-- that registration fails
|
||||
-> AuthHandler site TypedContent
|
||||
registerHelper = defaultRegisterHelper False False
|
||||
|
||||
-- | Helper that controls what happens after a forgot password
|
||||
-- request is submitted. As with `registerHelper`, this method can
|
||||
-- be overridden to customize the behavior when a user attempts
|
||||
-- to recover their password.
|
||||
--
|
||||
-- The default implementation is in terms of 'defaultRegisterHelper'.
|
||||
--
|
||||
-- @since: 1.6.9
|
||||
passwordResetHelper :: Route Auth
|
||||
-- ^ Where to sent the user in the event
|
||||
-- that the password reset fails
|
||||
-> AuthHandler site TypedContent
|
||||
passwordResetHelper = defaultRegisterHelper True True
|
||||
|
||||
authEmail :: (YesodAuthEmail m) => AuthPlugin m
|
||||
authEmail =
|
||||
AuthPlugin "email" dispatch emailLoginHandler
|
||||
@ -516,12 +547,12 @@ parseRegister = withObject "email" (\obj -> do
|
||||
pass <- obj .:? "password"
|
||||
return (email, pass))
|
||||
|
||||
registerHelper :: YesodAuthEmail master
|
||||
=> Bool -- ^ allow usernames?
|
||||
-> Bool -- ^ forgot password?
|
||||
-> Route Auth
|
||||
-> AuthHandler master TypedContent
|
||||
registerHelper allowUsername forgotPassword dest = do
|
||||
defaultRegisterHelper :: YesodAuthEmail master
|
||||
=> Bool -- ^ Allow lookup via username in addition to email
|
||||
-> Bool -- ^ Set to `True` for forgot password flow, `False` for new account registration
|
||||
-> Route Auth
|
||||
-> AuthHandler master TypedContent
|
||||
defaultRegisterHelper allowUsername forgotPassword dest = do
|
||||
y <- getYesod
|
||||
checkCsrfHeaderOrParam defaultCsrfHeaderName defaultCsrfParamName
|
||||
result <- runInputPostResult $ (,)
|
||||
@ -549,7 +580,7 @@ registerHelper allowUsername forgotPassword dest = do
|
||||
_ -> Nothing
|
||||
|
||||
case eidentifier of
|
||||
Left route -> loginErrorMessageI dest route
|
||||
Left failMsg -> loginErrorMessageI dest failMsg
|
||||
Right identifier -> do
|
||||
mecreds <- getEmailCreds identifier
|
||||
registerCreds <-
|
||||
@ -586,7 +617,7 @@ registerHelper allowUsername forgotPassword dest = do
|
||||
|
||||
|
||||
postRegisterR :: YesodAuthEmail master => AuthHandler master TypedContent
|
||||
postRegisterR = registerHelper False False registerR
|
||||
postRegisterR = registerHelper registerR
|
||||
|
||||
getForgotPasswordR :: YesodAuthEmail master => AuthHandler master Html
|
||||
getForgotPasswordR = forgotPasswordHandler
|
||||
@ -630,7 +661,7 @@ defaultForgotPasswordHandler = do
|
||||
}
|
||||
|
||||
postForgotPasswordR :: YesodAuthEmail master => AuthHandler master TypedContent
|
||||
postForgotPasswordR = registerHelper True True forgotPasswordR
|
||||
postForgotPasswordR = passwordResetHelper forgotPasswordR
|
||||
|
||||
getVerifyR :: YesodAuthEmail site
|
||||
=> AuthEmailId site
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name: yesod-auth
|
||||
version: 1.6.8.1
|
||||
version: 1.6.9
|
||||
license: MIT
|
||||
license-file: LICENSE
|
||||
author: Michael Snoyman, Patrick Brisbin
|
||||
|
||||
Loading…
Reference in New Issue
Block a user