mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-01-12 04:08:30 +01:00
OAuth2 authentication for yesod
Approach so far: The SpecHelper sets up an example App type which should (theoretically) be enough to get some fake requests and responses going, as in any yesod-test-based suite. The spec then tries to build an example plugin and make assertions on how it dispatches. This is currently falling down on subsite-related type errors (see commented attempts). Another potential direction is to define the YesodAuth instance for App to specify authPlugins built using the library. With that, we might be able to create specs using yesod-test that exercise aspects of the plugins in an indirect way, but enough to make useful assertions. |
||
|---|---|---|
| test | ||
| Yesod/Auth | ||
| .gitignore | ||
| circle.yml | ||
| LICENSE | ||
| README.md | ||
| Setup.lhs | ||
| stack.yaml | ||
| yesod-auth-oauth2.cabal | ||
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 = "..."
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