| Safe Haskell | None |
|---|
Yesod.Auth.Zendesk
- class YesodAuthPersist site => YesodZendesk site where
- zendeskToken :: site -> ByteString
- zendeskAuthURL :: site -> Text
- zendeskUserInfo :: HandlerT site IO ZendeskUser
- data ZendeskUser = ZendeskUser {
- zuName :: Text
- zuEmail :: Text
- zuExternalId :: ZendeskExternalId
- zuOrganization :: Maybe Text
- zuTags :: [Text]
- zuRemotePhotoURL :: Maybe Text
- data ZendeskExternalId
- data Zendesk
- getZendesk :: a -> Zendesk
- zendeskLoginRoute :: Route Zendesk
Documentation
class YesodAuthPersist site => YesodZendesk site whereSource
Type class that you need to implement in order to support Zendesk remote authentication.
Minimal complete definition: all functions are required.
Methods
zendeskToken :: site -> ByteStringSource
Shared secret between Zendesk and your site.
zendeskAuthURL :: site -> TextSource
URL on your Zendesk's site where users should be redirected to when logging in.
zendeskUserInfo :: HandlerT site IO ZendeskUserSource
Gather information that should be given to Zendesk about
an user. Please see ZendeskUser for more information
about what these fields mean.
Simple example:
zendeskUserInfo = do Entity uid user <-requireAuthreturndef{zuName= userName user ,zuEmail= userEmail user }
Advanced example:
zendeskUserInfo = do uid <-requireAuthIdrender <-getUrlRenderrunDB $ do Just user <- get uid Just org <- get (userOrganization user) returndef{zuName= userName user ,zuEmail= userEmail user ,zuOrganization= Just (organizationName org) ,zuRemotePhotoURL= Just (render $ UserPhotoR uid) }
Note: although I don't recomend this and I don't see any
reason why you would do it, it is possible to use
maybeAuth instead of requireAuth and login on Zendesk
with some sort of guest user should the user not be logged
in.
data ZendeskUser Source
Information about a user that is given to Zendesk. Please
see Zendesk's documentation
(http://www.zendesk.com/support/api/remote-authentication)
in order to see more details of how theses fields are
interpreted.
Constructors
| ZendeskUser | |
Fields
| |
Instances
| Eq ZendeskUser | |
| Ord ZendeskUser | |
| Read ZendeskUser | |
| Show ZendeskUser | |
| Default ZendeskUser | Fields |
data ZendeskExternalId Source
Which external ID should be given to Zendesk.
Constructors
| UseYesodAuthId | Use the user ID from |
| Explicit Text | Use this given value. |
| NoExternalId | Do not give an external ID. |
Instances
Data type for yesod-auth-zendesk's subsite.
Instances
| RouteAttrs Zendesk | |
| ParseRoute Zendesk | |
| RenderRoute Zendesk | |
| YesodZendesk site => YesodSubDispatch Zendesk (HandlerT site IO) | |
| Eq (Route Zendesk) | |
| Read (Route Zendesk) | |
| Show (Route Zendesk) |
getZendesk :: a -> ZendeskSource
Create a new Zendesk, use this on your config/routes file.
zendeskLoginRoute :: Route ZendeskSource
Redirect the user to Zendesk such that they're already
logged in when they arrive. For example, you may use
zendeskLoginRoute when the user clicks on a "Support" item
on a menu.