Merge pull request #526 from qrilka/clear-creds

Added clearCreds symmetric to setCreds function
This commit is contained in:
Michael Snoyman 2013-04-09 01:24:16 -07:00
commit 2bbd0d16a2

View File

@ -18,6 +18,7 @@ module Yesod.Auth
-- * Plugin interface -- * Plugin interface
, Creds (..) , Creds (..)
, setCreds , setCreds
, clearCreds
-- * User functions -- * User functions
, defaultMaybeAuthId , defaultMaybeAuthId
, maybeAuth , maybeAuth
@ -163,7 +164,11 @@ mkYesodSub "Auth"
/page/#Text/STRINGS PluginR /page/#Text/STRINGS PluginR
|] |]
setCreds :: YesodAuth master => Bool -> Creds master -> GHandler sub master () -- | Sets user credentials for the session after checking them with authentication backends.
setCreds :: YesodAuth master
=> Bool -- ^ if HTTP redirects should be done
-> Creds master -- ^ new credentials
-> GHandler sub master ()
setCreds doRedirects creds = do setCreds doRedirects creds = do
y <- getYesod y <- getYesod
maid <- getAuthId creds maid <- getAuthId creds
@ -184,6 +189,17 @@ $newline never
onLogin onLogin
redirectUltDest $ loginDest y redirectUltDest $ loginDest y
-- | Clears current user credentials for the session.
clearCreds :: YesodAuth master
=> Bool -- ^ if HTTP redirect to 'logoutDest' should be done
-> GHandler sub master ()
clearCreds doRedirects = do
y <- getYesod
deleteSession credsKey
when doRedirects $ do
onLogout
redirectUltDest $ logoutDest y
getCheckR :: YesodAuth master => GHandler Auth master RepHtmlJson getCheckR :: YesodAuth master => GHandler Auth master RepHtmlJson
getCheckR = do getCheckR = do
creds <- maybeAuthId creds <- maybeAuthId
@ -219,11 +235,7 @@ getLogoutR = do
setUltDestReferer' >> redirectToPost (tm LogoutR) setUltDestReferer' >> redirectToPost (tm LogoutR)
postLogoutR :: YesodAuth master => GHandler Auth master () postLogoutR :: YesodAuth master => GHandler Auth master ()
postLogoutR = do postLogoutR = clearCreds True
y <- getYesod
deleteSession credsKey
onLogout
redirectUltDest $ logoutDest y
handlePluginR :: YesodAuth master => Text -> [Text] -> GHandler Auth master () handlePluginR :: YesodAuth master => Text -> [Text] -> GHandler Auth master ()
handlePluginR plugin pieces = do handlePluginR plugin pieces = do