Redirect to afterVerificationWithPass when account was registered with a password
This commit is contained in:
parent
54b1d3d3ff
commit
6a64debfa0
@ -144,11 +144,15 @@ registerR = PluginR "email" ["register"]
|
|||||||
forgotPasswordR = PluginR "email" ["forgot-password"]
|
forgotPasswordR = PluginR "email" ["forgot-password"]
|
||||||
setpassR = PluginR "email" ["set-password"]
|
setpassR = PluginR "email" ["set-password"]
|
||||||
|
|
||||||
|
verifyURLHasSetPassText :: Text
|
||||||
|
verifyURLHasSetPassText = "has-set-pass"
|
||||||
|
|
||||||
-- |
|
-- |
|
||||||
--
|
--
|
||||||
-- @since 1.4.5
|
-- @since 1.4.5
|
||||||
verifyR :: Text -> Text -> AuthRoute -- FIXME
|
verifyR :: Text -> Text -> Bool -> AuthRoute -- FIXME
|
||||||
verifyR eid verkey = PluginR "email" ["verify", eid, verkey]
|
verifyR eid verkey hasSetPass = PluginR "email" path
|
||||||
|
where path = "verify":eid:verkey:(if hasSetPass then [verifyURLHasSetPassText] else [])
|
||||||
|
|
||||||
type Email = Text
|
type Email = Text
|
||||||
type VerKey = Text
|
type VerKey = Text
|
||||||
@ -273,6 +277,12 @@ class ( YesodAuth site
|
|||||||
-- @since 1.2.0
|
-- @since 1.2.0
|
||||||
afterPasswordRoute :: site -> Route site
|
afterPasswordRoute :: site -> Route site
|
||||||
|
|
||||||
|
-- | Route to send user to after verification with a password
|
||||||
|
--
|
||||||
|
-- @since 1.6.5
|
||||||
|
afterVerificationWithPass :: site -> Route site
|
||||||
|
afterVerificationWithPass = afterPasswordRoute
|
||||||
|
|
||||||
-- | Does the user need to provide the current password in order to set a
|
-- | Does the user need to provide the current password in order to set a
|
||||||
-- new password?
|
-- new password?
|
||||||
--
|
--
|
||||||
@ -384,7 +394,11 @@ authEmail =
|
|||||||
dispatch "GET" ["verify", eid, verkey] =
|
dispatch "GET" ["verify", eid, verkey] =
|
||||||
case fromPathPiece eid of
|
case fromPathPiece eid of
|
||||||
Nothing -> notFound
|
Nothing -> notFound
|
||||||
Just eid' -> getVerifyR eid' verkey >>= sendResponse
|
Just eid' -> getVerifyR eid' verkey False >>= sendResponse
|
||||||
|
dispatch "GET" ["verify", eid, verkey, hasSetPass] =
|
||||||
|
case fromPathPiece eid of
|
||||||
|
Nothing -> notFound
|
||||||
|
Just eid' -> getVerifyR eid' verkey (hasSetPass == verifyURLHasSetPassText) >>= sendResponse
|
||||||
dispatch "POST" ["login"] = postLoginR >>= sendResponse
|
dispatch "POST" ["login"] = postLoginR >>= sendResponse
|
||||||
dispatch "GET" ["set-password"] = getPasswordR >>= sendResponse
|
dispatch "GET" ["set-password"] = getPasswordR >>= sendResponse
|
||||||
dispatch "POST" ["set-password"] = postPasswordR >>= sendResponse
|
dispatch "POST" ["set-password"] = postPasswordR >>= sendResponse
|
||||||
@ -563,7 +577,7 @@ registerHelper allowUsername allowPassword dest = do
|
|||||||
where sendConfirmationEmail (lid, _, verKey, email) = do
|
where sendConfirmationEmail (lid, _, verKey, email) = do
|
||||||
render <- getUrlRender
|
render <- getUrlRender
|
||||||
tp <- getRouteToParent
|
tp <- getRouteToParent
|
||||||
let verUrl = render $ tp $ verifyR (toPathPiece lid) verKey
|
let verUrl = render $ tp $ verifyR (toPathPiece lid) verKey (isJust mpass)
|
||||||
sendVerifyEmail email verKey verUrl
|
sendVerifyEmail email verKey verUrl
|
||||||
confirmationEmailSentResponse identifier
|
confirmationEmailSentResponse identifier
|
||||||
|
|
||||||
@ -618,8 +632,9 @@ postForgotPasswordR = registerHelper True False forgotPasswordR
|
|||||||
getVerifyR :: YesodAuthEmail site
|
getVerifyR :: YesodAuthEmail site
|
||||||
=> AuthEmailId site
|
=> AuthEmailId site
|
||||||
-> Text
|
-> Text
|
||||||
|
-> Bool
|
||||||
-> AuthHandler site TypedContent
|
-> AuthHandler site TypedContent
|
||||||
getVerifyR lid key = do
|
getVerifyR lid key hasSetPass = do
|
||||||
realKey <- getVerifyKey lid
|
realKey <- getVerifyKey lid
|
||||||
memail <- getEmail lid
|
memail <- getEmail lid
|
||||||
mr <- getMessageRender
|
mr <- getMessageRender
|
||||||
@ -635,8 +650,14 @@ getVerifyR lid key = do
|
|||||||
selectRep $ do
|
selectRep $ do
|
||||||
provideRep $ do
|
provideRep $ do
|
||||||
addMessageI "success" msgAv
|
addMessageI "success" msgAv
|
||||||
tp <- getRouteToParent
|
redirectRoute <- if hasSetPass
|
||||||
fmap asHtml $ redirect $ tp setpassR
|
then do
|
||||||
|
y <- getYesod
|
||||||
|
return $ afterVerificationWithPass y
|
||||||
|
else do
|
||||||
|
tp <- getRouteToParent
|
||||||
|
return $ tp setpassR
|
||||||
|
fmap asHtml $ redirect redirectRoute
|
||||||
provideJsonMessage $ mr msgAv
|
provideJsonMessage $ mr msgAv
|
||||||
_ -> invalidKey mr
|
_ -> invalidKey mr
|
||||||
where
|
where
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user