mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-04-27 13:17:43 +02:00
Add ORCID OAuth provider
This commit is contained in:
parent
87a0231a6d
commit
624b2be5aa
@ -40,6 +40,7 @@ import Yesod.Auth.OAuth2.Spotify
|
|||||||
import Yesod.Auth.OAuth2.Twitch
|
import Yesod.Auth.OAuth2.Twitch
|
||||||
import Yesod.Auth.OAuth2.Upcase
|
import Yesod.Auth.OAuth2.Upcase
|
||||||
import Yesod.Auth.OAuth2.WordPressDotCom
|
import Yesod.Auth.OAuth2.WordPressDotCom
|
||||||
|
import Yesod.Auth.OAuth2.ORCID
|
||||||
|
|
||||||
data App = App
|
data App = App
|
||||||
{ appHttpManager :: Manager
|
{ appHttpManager :: Manager
|
||||||
@ -149,6 +150,7 @@ mkFoundation = do
|
|||||||
, loadPlugin (oauth2Spotify []) "SPOTIFY"
|
, loadPlugin (oauth2Spotify []) "SPOTIFY"
|
||||||
, loadPlugin oauth2Twitch "TWITCH"
|
, loadPlugin oauth2Twitch "TWITCH"
|
||||||
, loadPlugin oauth2WordPressDotCom "WORDPRESS_DOT_COM"
|
, loadPlugin oauth2WordPressDotCom "WORDPRESS_DOT_COM"
|
||||||
|
, loadPlugin oauth2ORCID "ORCID"
|
||||||
, loadPlugin oauth2Upcase "UPCASE"
|
, loadPlugin oauth2Upcase "UPCASE"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
50
src/Yesod/Auth/OAuth2/ORCID.hs
Normal file
50
src/Yesod/Auth/OAuth2/ORCID.hs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
|
module Yesod.Auth.OAuth2.ORCID
|
||||||
|
( oauth2ORCID
|
||||||
|
) where
|
||||||
|
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import Yesod.Auth.OAuth2.Prelude
|
||||||
|
|
||||||
|
pluginName :: Text
|
||||||
|
pluginName = "orcid"
|
||||||
|
|
||||||
|
newtype User = User Text
|
||||||
|
|
||||||
|
instance FromJSON User where
|
||||||
|
parseJSON = withObject "User" $ \o -> User <$> o .: "sub"
|
||||||
|
|
||||||
|
oauth2ORCID
|
||||||
|
:: YesodAuth m
|
||||||
|
=> Text
|
||||||
|
-- ^ Client Id
|
||||||
|
-> Text
|
||||||
|
-- ^ Client Secret
|
||||||
|
-> AuthPlugin m
|
||||||
|
oauth2ORCID clientId clientSecret =
|
||||||
|
authOAuth2 pluginName oauth2 $ \manager token -> do
|
||||||
|
(User userId, userResponse) <-
|
||||||
|
authGetProfile
|
||||||
|
pluginName
|
||||||
|
manager
|
||||||
|
token
|
||||||
|
"https://orcid.org/oauth/userinfo"
|
||||||
|
|
||||||
|
pure
|
||||||
|
Creds
|
||||||
|
{ credsPlugin = pluginName
|
||||||
|
, credsIdent = T.pack $ show userId
|
||||||
|
, credsExtra = setExtra token userResponse
|
||||||
|
}
|
||||||
|
where
|
||||||
|
oauth2 =
|
||||||
|
OAuth2
|
||||||
|
{ oauth2ClientId = clientId
|
||||||
|
, oauth2ClientSecret = Just clientSecret
|
||||||
|
, oauth2AuthorizeEndpoint =
|
||||||
|
"https://orcid.org/oauth/authorize"
|
||||||
|
`withQuery` [scopeParam " " ["openid"]]
|
||||||
|
, oauth2TokenEndpoint = "https://orcid.org/oauth/token"
|
||||||
|
, oauth2RedirectUri = Nothing
|
||||||
|
}
|
||||||
@ -4,7 +4,7 @@ cabal-version: 1.18
|
|||||||
--
|
--
|
||||||
-- see: https://github.com/sol/hpack
|
-- see: https://github.com/sol/hpack
|
||||||
--
|
--
|
||||||
-- hash: a9bf86bc3dabd56dd108a6550bbd114607294b7add72c38d081f7f58085af3e9
|
-- hash: e92a1426ba46aee8b456d3b2454bcee06ae044afd5e1bb7b0d50641568b576ac
|
||||||
|
|
||||||
name: yesod-auth-oauth2
|
name: yesod-auth-oauth2
|
||||||
version: 0.7.2.0
|
version: 0.7.2.0
|
||||||
@ -54,6 +54,7 @@ library
|
|||||||
Yesod.Auth.OAuth2.GitLab
|
Yesod.Auth.OAuth2.GitLab
|
||||||
Yesod.Auth.OAuth2.Google
|
Yesod.Auth.OAuth2.Google
|
||||||
Yesod.Auth.OAuth2.Nylas
|
Yesod.Auth.OAuth2.Nylas
|
||||||
|
Yesod.Auth.OAuth2.ORCID
|
||||||
Yesod.Auth.OAuth2.Prelude
|
Yesod.Auth.OAuth2.Prelude
|
||||||
Yesod.Auth.OAuth2.Random
|
Yesod.Auth.OAuth2.Random
|
||||||
Yesod.Auth.OAuth2.Salesforce
|
Yesod.Auth.OAuth2.Salesforce
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user