yesod-auth-deskcom 1.0 → 1.1
raw patch · 2 files changed
+44/−13 lines, 2 files
Files
- src/Yesod/Auth/DeskCom.hs +43/−12
- yesod-auth-deskcom.cabal +1/−1
src/Yesod/Auth/DeskCom.hs view
@@ -8,6 +8,7 @@ , DeskCom , getDeskCom , deskComLoginRoute+ , deskComMaybeLoginRoute ) where import Control.Applicative ((<$>))@@ -52,8 +53,8 @@ -- Simple example: -- -- @- -- deskComUserInfo = do- -- Entity uid user <- 'requireAuth'+ -- deskComUserInfo uid = do+ -- user <- runDB $ get uid -- return 'def' { 'duName' = userName user -- , 'duEmail' = userEmail user } -- @@@ -61,8 +62,7 @@ -- Advanced example: -- -- @- -- deskComUserInfo = do- -- uid <- 'requireAuthId'+ -- deskComUserInfo uid = do -- render <- 'getUrlRender' -- runDB $ do -- Just user <- get uid@@ -79,7 +79,7 @@ -- 'maybeAuth' instead of 'requireAuth' and login on Desk.com -- with some sort of guest user should the user not be logged -- in.- deskComUserInfo :: GHandler DeskCom master DeskComUser+ deskComUserInfo :: AuthId master -> GHandler DeskCom master DeskComUser -- | Each time we login an user on Desk.com, we create a token. -- This function defines how much time the token should be@@ -189,22 +189,53 @@ mkYesodSub "DeskCom" [ClassP ''YesodDeskCom [VarT $ mkName "master"]] [parseRoutes|- / DeskComLoginR GET+ / DeskComLoginR GET+ /m DeskComMaybeLoginR GET |] -- | Redirect the user to Desk.com such that they're already -- logged in when they arrive. For example, you may use--- @deskComLoginRoute@ when the user clicks on a \"Support\" item--- on a menu.+-- @deskComLoginRoute@ as the login URL on Multipass config. deskComLoginRoute :: Route DeskCom deskComLoginRoute = DeskComLoginR --- | Route used by the Desk.com remote authentication. Works both--- when Desk.com call us and when we call them.+-- | If the user is logged in, redirect them to Desk.com such+-- that they're already logged in when they arrive (same as+-- 'deskComLoginRoute'). Otherwise, redirect them to Desk.com+-- without asking for credentials. For example, you may use+-- @deskComMaybeLoginRoute@ when the user clicks on a \"Support\"+-- item on a menu.+deskComMaybeLoginRoute :: Route DeskCom+deskComMaybeLoginRoute = DeskComMaybeLoginR+++-- | Route used by the Desk.com remote authentication. Works+-- both when Desk.com call us and when we call them. Forces user+-- to be logged in. getDeskComLoginR :: YesodDeskCom master => GHandler DeskCom master ()-getDeskComLoginR = do+getDeskComLoginR = requireAuthId >>= redirectToMultipass+++-- | Same as 'getDeskComLoginR' if the user is logged in,+-- otherwise redirect to the Desk.com portal without asking for+-- credentials.+getDeskComMaybeLoginR :: YesodDeskCom master => GHandler DeskCom master ()+getDeskComMaybeLoginR = maybeAuthId >>= maybe redirectToPortal redirectToMultipass+++-- | Redirect the user to the main Desk.com portal.+redirectToPortal :: YesodDeskCom master => GHandler DeskCom master ()+redirectToPortal = do+ y <- getYesod+ let DeskComCredentials {..} = deskComCredentials y+ redirect $ T.concat [ "http://", dccDomain, "/" ]+++-- | Redirect the user to the multipass login.+redirectToMultipass :: YesodDeskCom master => AuthId master -> GHandler DeskCom master ()+redirectToMultipass uid = do -- Get generic info. y <- getYesod let DeskComCredentials {..} = deskComCredentials y@@ -213,7 +244,7 @@ expires <- TI.addUTCTime (deskComTokenTimeout y) <$> liftIO TI.getCurrentTime -- Get information about the currently logged user.- DeskComUser {..} <- deskComUserInfo+ DeskComUser {..} <- deskComUserInfo uid userId <- case duUserId of UseYesodAuthId -> toPathPiece <$> requireAuthId Explicit x -> return x
yesod-auth-deskcom.cabal view
@@ -1,5 +1,5 @@ Name: yesod-auth-deskcom-Version: 1.0+Version: 1.1 Synopsis: Desk.com remote authentication support for Yesod apps. Homepage: https://github.com/meteficha/yesod-auth-deskcom License: BSD3