Skip to content

v0d1ch/yesod-auth-oauth2

 
 

Repository files navigation

Note : this fork containes bumped version of some libraries so you get to use it with newer Yesod versions

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, ScopeSlackTeamScope] 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%