packages feed

yesod-auth-deskcom 1.0 → 1.1

raw patch · 2 files changed

+44/−13 lines, 2 files

Files

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