yesod-auth: redirectToReferer

This commit is contained in:
Michael Snoyman 2011-10-05 07:19:37 +02:00
parent 1f88d34c0c
commit 4070b8e49a
3 changed files with 21 additions and 5 deletions

View File

@ -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

View File

@ -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|
<p>Auth: #{show mauth}
$maybe _ <- mauth
<p>
<a href=@{AuthR LogoutR}>Logout
$nothing
<p>
<a href=@{AuthR LoginR}>Login
|]
instance Yesod BID where

View File

@ -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