packages feed

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