diff --git a/yesod-auth/Yesod/Auth.hs b/yesod-auth/Yesod/Auth.hs index ae5e5074..07b9ed86 100644 --- a/yesod-auth/Yesod/Auth.hs +++ b/yesod-auth/Yesod/Auth.hs @@ -96,6 +96,11 @@ class (Yesod m, SinglePiece (AuthId m), RenderMessage m FormMessage) => YesodAut -> AuthMessage -> Text renderAuthMessage _ _ = defaultMessage + -- | After login and logout, redirect to the referring page, instead of + -- 'loginDest' and 'logoutDest'. Default is 'False'. + redirectToReferer :: m -> Bool + redirectToReferer _ = False + mkYesodSub "Auth" [ ClassP ''YesodAuth [VarT $ mkName "master"] ] @@ -149,11 +154,16 @@ $nothing [ (T.pack "logged_in", Bool $ maybe False (const True) creds) ] +setUltDestReferer' :: YesodAuth master => GHandler sub master () +setUltDestReferer' = do + m <- getYesod + when (redirectToReferer m) setUltDestReferer + getLoginR :: YesodAuth m => GHandler Auth m RepHtml -getLoginR = setUltDestReferer >> loginHandler +getLoginR = setUltDestReferer' >> loginHandler getLogoutR :: YesodAuth m => GHandler Auth m () -getLogoutR = setUltDestReferer >> postLogoutR -- FIXME redirect to post +getLogoutR = setUltDestReferer' >> postLogoutR -- FIXME redirect to post postLogoutR :: YesodAuth m => GHandler Auth m () postLogoutR = do diff --git a/yesod-auth/openid.hs b/yesod-auth/openid.hs index e12cbe2a..74105021 100644 --- a/yesod-auth/openid.hs +++ b/yesod-auth/openid.hs @@ -20,14 +20,20 @@ mkYesod "BID" [parseRoutes| /auth AuthR Auth getAuth |] -getRootR :: Handler () -getRootR = redirect RedirectTemporary $ AuthR LoginR +getRootR :: Handler RepHtml +getRootR = getAfterLoginR getAfterLoginR :: Handler RepHtml getAfterLoginR = do mauth <- maybeAuthId defaultLayout $ addHamlet [hamlet|

Auth: #{show mauth} +$maybe _ <- mauth +

+ Logout +$nothing +

+ Login |] instance Yesod BID where diff --git a/yesod-auth/yesod-auth.cabal b/yesod-auth/yesod-auth.cabal index 331da47b..3e51bb21 100644 --- a/yesod-auth/yesod-auth.cabal +++ b/yesod-auth/yesod-auth.cabal @@ -1,5 +1,5 @@ name: yesod-auth -version: 0.7.3 +version: 0.7.4 license: BSD3 license-file: LICENSE author: Michael Snoyman, Patrick Brisbin