yesod-auth-zendesk 1.1 → 1.2
raw patch · 3 files changed
+34/−22 lines, 3 filesdep ~yesod-authdep ~yesod-corePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: yesod-auth, yesod-core
API changes (from Hackage documentation)
- Yesod.Auth.Zendesk: instance (Yesod master, YesodZendesk master) => YesodDispatch Zendesk master
- Yesod.Auth.Zendesk: instance Eq (Route Zendesk)
- Yesod.Auth.Zendesk: instance Read (Route Zendesk)
- Yesod.Auth.Zendesk: instance RenderRoute Zendesk
- Yesod.Auth.Zendesk: instance Show (Route Zendesk)
+ Yesod.Auth.Zendesk: instance YesodZendesk site => YesodSubDispatch Zendesk (HandlerT site IO)
- Yesod.Auth.Zendesk: class YesodAuth master => YesodZendesk master
+ Yesod.Auth.Zendesk: class YesodAuthPersist site => YesodZendesk site
- Yesod.Auth.Zendesk: zendeskAuthURL :: YesodZendesk master => master -> Text
+ Yesod.Auth.Zendesk: zendeskAuthURL :: YesodZendesk site => site -> Text
- Yesod.Auth.Zendesk: zendeskToken :: YesodZendesk master => master -> ByteString
+ Yesod.Auth.Zendesk: zendeskToken :: YesodZendesk site => site -> ByteString
- Yesod.Auth.Zendesk: zendeskUserInfo :: YesodZendesk master => GHandler Zendesk master ZendeskUser
+ Yesod.Auth.Zendesk: zendeskUserInfo :: YesodZendesk site => HandlerT site IO ZendeskUser
Files
- src/Yesod/Auth/Zendesk.hs +13/−19
- src/Yesod/Auth/Zendesk/Data.hs +15/−0
- yesod-auth-zendesk.cabal +6/−3
src/Yesod/Auth/Zendesk.hs view
@@ -1,3 +1,4 @@+{-# OPTIONS_GHC -fno-warn-orphans #-} module Yesod.Auth.Zendesk ( YesodZendesk(..) , ZendeskUser(..)@@ -9,12 +10,10 @@ import Control.Applicative ((<$>)) import Control.Monad (join)-import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Default (Default(..)) import Data.List (intersperse) import Data.Text (Text) import Data.Time (getCurrentTime, formatTime)-import Language.Haskell.TH.Syntax (Pred(ClassP), Type(VarT), mkName) import Yesod.Auth import Yesod.Core import qualified Crypto.Hash.MD5 as MD5@@ -26,18 +25,20 @@ import qualified Network.HTTP.Types as H import qualified Network.Wai as W +import Yesod.Auth.Zendesk.Data + -- | Type class that you need to implement in order to support -- Zendesk remote authentication. -- -- /Minimal complete definition:/ all functions are required.-class YesodAuth master => YesodZendesk master where+class YesodAuthPersist site => YesodZendesk site where -- | Shared secret between Zendesk and your site.- zendeskToken :: master -> B.ByteString+ zendeskToken :: site -> B.ByteString -- | URL on your Zendesk's site where users should be -- redirected to when logging in.- zendeskAuthURL :: master -> Text+ zendeskAuthURL :: site -> Text -- | Gather information that should be given to Zendesk about -- an user. Please see 'ZendeskUser' for more information@@ -73,7 +74,7 @@ -- 'maybeAuth' instead of 'requireAuth' and login on Zendesk -- with some sort of guest user should the user not be logged -- in.- zendeskUserInfo :: GHandler Zendesk master ZendeskUser+ zendeskUserInfo :: HandlerT site IO ZendeskUser -- | Information about a user that is given to 'Zendesk'. Please@@ -132,20 +133,13 @@ ---------------------------------------------------------------------- --- | Data type for @yesod-auth-zendesk@\'s subsite.-data Zendesk = Zendesk-- -- | Create a new 'Zendesk', use this on your @config/routes@ file. getZendesk :: a -> Zendesk getZendesk = const Zendesk -mkYesodSub "Zendesk"- [ClassP ''YesodZendesk [VarT $ mkName "master"]]- [parseRoutes|- / ZendeskLoginR GET-|]+instance YesodZendesk site => YesodSubDispatch Zendesk (HandlerT site IO) where+ yesodSubDispatch = $(mkYesodSubDispatch resourcesZendesk) -- | Redirect the user to Zendesk such that they're already@@ -158,7 +152,7 @@ -- | Route used by the Zendesk remote authentication. Works both -- when Zendesk call us and when we call them.-getZendeskLoginR :: YesodZendesk master => GHandler Zendesk master ()+getZendeskLoginR :: YesodZendesk site => HandlerT Zendesk (HandlerT site IO) () getZendeskLoginR = do -- Get the timestamp and the request params. (timestamp, getParams) <- do@@ -184,15 +178,15 @@ return (timestamp, rawReqParams) -- Get information about the currently logged user.- ZendeskUser {..} <- zendeskUserInfo+ ZendeskUser {..} <- lift zendeskUserInfo externalId <- case zuExternalId of- UseYesodAuthId -> Just . toPathPiece <$> requireAuthId+ UseYesodAuthId -> Just . toPathPiece <$> lift requireAuthId Explicit x -> return (Just x) NoExternalId -> return Nothing let tags = T.concat $ intersperse "," zuTags -- Calculate hash- y <- getYesod+ y <- lift getYesod let hash = let toBeHashed = B.concat . cons zuName . cons zuEmail
+ src/Yesod/Auth/Zendesk/Data.hs view
@@ -0,0 +1,15 @@+module Yesod.Auth.Zendesk.Data+ ( Zendesk(..)+ , Route(ZendeskLoginR)+ , resourcesZendesk+ ) where++import Yesod.Core++-- | Data type for @yesod-auth-zendesk@\'s subsite.+data Zendesk = Zendesk++mkYesodSubData "Zendesk"+ [parseRoutes|+ / ZendeskLoginR GET+|]
yesod-auth-zendesk.cabal view
@@ -1,5 +1,5 @@ Name: yesod-auth-zendesk-Version: 1.1+Version: 1.2 Synopsis: Zendesk remote authentication support for Yesod apps. Homepage: https://github.com/meteficha/yesod-auth-zendesk License: BSD3@@ -39,14 +39,17 @@ , cryptohash >= 0.6 , base16-bytestring , http-types- , yesod-core == 1.1.*- , yesod-auth == 1.1.*+ , yesod-core == 1.2.*+ , yesod-auth == 1.2.* , wai , http-conduit , transformers >= 0.1.3 && < 0.4 Exposed-modules: Yesod.Auth.Zendesk+ Other-modules: Yesod.Auth.Zendesk.Data Extensions:+ ConstraintKinds+ FlexibleContexts FlexibleInstances GADTs MultiParamTypeClasses