Skip to content

Drezil/yesod-auth-oauth2

 
 

Repository files navigation

Yesod.Auth.OAuth2

OAuth2 AuthPlugins for Yesod.

Basic Usage

To use one of the supported providers:

import Yesod.Auth import Yesod.Auth.OAuth2.Github instance YesodAuth App where -- ... authPlugins _ = [oauth2Github clientId clientSecret] clientId :: Text clientId = "..." clientSecret :: Text clientSecret = "..."

Some plugins, such as GitHub and Slack, have scoped functions for requesting additional information:

import Yesod.Auth import Yesod.Auth.OAuth2.Slack instance YesodAuth App where -- ... authPlugins _ = [oauth2SlackScoped clientId clientSecret slackScopes] where slackScopes = [SlackEmailScope, SlackAvatarScope, SlackTeamScope] clientId :: Text clientId = "..." clientSecret :: Text clientSecret = "..."

Advanced Usage

To use any other provider:

import Yesod.Auth import Yesod.Auth.OAuth2 instance YesodAuth App where -- ... authPlugins _ = [myPlugin] myPlugin :: AuthPlugin m myPlugin = authOAuth2 "mysite" (OAuth2 { oauthClientId = "..." , oauthClientSecret = "..." , oauthOAuthorizeEndpoint = "https://mysite.com/oauth/authorize" , oauthAccessTokenEndpoint = "https://mysite.com/oauth/token" , oauthCallback = Nothing }) makeCredentials makeCredentials :: Manager -> AccessToken -> IO (Creds m) makeCredentials manager token = do result <- authGetJSON manager token "https://mysite.com/api/me.json" return $ -- Parse the JSON into (Creds m)

If you write one of these, please consider opening a Pull Request

About

OAuth2 authentication for yesod

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Haskell 100.0%