mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-01-11 19:58:28 +01:00
Restyled by brittany
This commit is contained in:
parent
426c91dd41
commit
555653b76d
162
example/Main.hs
162
example/Main.hs
@ -21,42 +21,44 @@
|
||||
--
|
||||
module Main where
|
||||
|
||||
import Data.Aeson
|
||||
import Data.Aeson.Encode.Pretty
|
||||
import Data.ByteString.Lazy (fromStrict, toStrict)
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe (fromJust)
|
||||
import Data.String ( IsString(fromString) )
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Text.Encoding (decodeUtf8)
|
||||
import LoadEnv
|
||||
import Network.HTTP.Conduit
|
||||
import Network.Wai.Handler.Warp (runEnv)
|
||||
import System.Environment (getEnv)
|
||||
import Yesod
|
||||
import Yesod.Auth
|
||||
import Yesod.Auth.OAuth2.Auth0
|
||||
import Yesod.Auth.OAuth2.AzureAD
|
||||
import Yesod.Auth.OAuth2.BattleNet
|
||||
import Yesod.Auth.OAuth2.Bitbucket
|
||||
import Yesod.Auth.OAuth2.ClassLink
|
||||
import Yesod.Auth.OAuth2.EveOnline
|
||||
import Yesod.Auth.OAuth2.GitHub
|
||||
import Yesod.Auth.OAuth2.GitLab
|
||||
import Yesod.Auth.OAuth2.Google
|
||||
import Yesod.Auth.OAuth2.Nylas
|
||||
import Yesod.Auth.OAuth2.Salesforce
|
||||
import Yesod.Auth.OAuth2.Slack
|
||||
import Yesod.Auth.OAuth2.Spotify
|
||||
import Yesod.Auth.OAuth2.Twitch
|
||||
import Yesod.Auth.OAuth2.Upcase
|
||||
import Yesod.Auth.OAuth2.WordPressDotCom
|
||||
import Data.Aeson
|
||||
import Data.Aeson.Encode.Pretty
|
||||
import Data.ByteString.Lazy ( fromStrict
|
||||
, toStrict
|
||||
)
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe ( fromJust )
|
||||
import Data.String ( IsString(fromString) )
|
||||
import Data.Text ( Text )
|
||||
import qualified Data.Text as T
|
||||
import Data.Text.Encoding ( decodeUtf8 )
|
||||
import LoadEnv
|
||||
import Network.HTTP.Conduit
|
||||
import Network.Wai.Handler.Warp ( runEnv )
|
||||
import System.Environment ( getEnv )
|
||||
import Yesod
|
||||
import Yesod.Auth
|
||||
import Yesod.Auth.OAuth2.Auth0
|
||||
import Yesod.Auth.OAuth2.AzureAD
|
||||
import Yesod.Auth.OAuth2.BattleNet
|
||||
import Yesod.Auth.OAuth2.Bitbucket
|
||||
import Yesod.Auth.OAuth2.ClassLink
|
||||
import Yesod.Auth.OAuth2.EveOnline
|
||||
import Yesod.Auth.OAuth2.GitHub
|
||||
import Yesod.Auth.OAuth2.GitLab
|
||||
import Yesod.Auth.OAuth2.Google
|
||||
import Yesod.Auth.OAuth2.Nylas
|
||||
import Yesod.Auth.OAuth2.Salesforce
|
||||
import Yesod.Auth.OAuth2.Slack
|
||||
import Yesod.Auth.OAuth2.Spotify
|
||||
import Yesod.Auth.OAuth2.Twitch
|
||||
import Yesod.Auth.OAuth2.Upcase
|
||||
import Yesod.Auth.OAuth2.WordPressDotCom
|
||||
|
||||
data App = App
|
||||
{ appHttpManager :: Manager
|
||||
, appAuthPlugins :: [AuthPlugin App]
|
||||
}
|
||||
{ appHttpManager :: Manager
|
||||
, appAuthPlugins :: [AuthPlugin App]
|
||||
}
|
||||
|
||||
mkYesod "App" [parseRoutes|
|
||||
/ RootR GET
|
||||
@ -65,28 +67,28 @@ mkYesod "App" [parseRoutes|
|
||||
|
||||
instance Yesod App where
|
||||
-- see https://github.com/thoughtbot/yesod-auth-oauth2/issues/87
|
||||
approot = ApprootStatic "http://localhost:3000"
|
||||
approot = ApprootStatic "http://localhost:3000"
|
||||
|
||||
instance YesodAuth App where
|
||||
type AuthId App = Text
|
||||
loginDest _ = RootR
|
||||
logoutDest _ = RootR
|
||||
type AuthId App = Text
|
||||
loginDest _ = RootR
|
||||
logoutDest _ = RootR
|
||||
|
||||
-- Disable any attempt to read persisted authenticated state
|
||||
maybeAuthId = return Nothing
|
||||
-- Disable any attempt to read persisted authenticated state
|
||||
maybeAuthId = return Nothing
|
||||
|
||||
-- Copy the Creds response into the session for viewing after
|
||||
authenticate c = do
|
||||
mapM_ (uncurry setSession)
|
||||
$ [("credsIdent", credsIdent c), ("credsPlugin", credsPlugin c)]
|
||||
++ credsExtra c
|
||||
-- Copy the Creds response into the session for viewing after
|
||||
authenticate c = do
|
||||
mapM_ (uncurry setSession)
|
||||
$ [("credsIdent", credsIdent c), ("credsPlugin", credsPlugin c)]
|
||||
++ credsExtra c
|
||||
|
||||
return $ Authenticated "1"
|
||||
return $ Authenticated "1"
|
||||
|
||||
authPlugins = appAuthPlugins
|
||||
authPlugins = appAuthPlugins
|
||||
|
||||
instance RenderMessage App FormMessage where
|
||||
renderMessage _ _ = defaultFormMessage
|
||||
renderMessage _ _ = defaultFormMessage
|
||||
|
||||
-- brittany-disable-next-binding
|
||||
|
||||
@ -129,41 +131,41 @@ getRootR = do
|
||||
|
||||
mkFoundation :: IO App
|
||||
mkFoundation = do
|
||||
loadEnv
|
||||
loadEnv
|
||||
|
||||
auth0Host <- getEnv "AUTH0_HOST"
|
||||
auth0Host <- getEnv "AUTH0_HOST"
|
||||
|
||||
appHttpManager <- newManager tlsManagerSettings
|
||||
appAuthPlugins <- sequence
|
||||
-- When Providers are added, add them here and update .env.example.
|
||||
-- Nothing else should need changing.
|
||||
--
|
||||
-- FIXME: oauth2BattleNet is quite annoying!
|
||||
--
|
||||
[ loadPlugin oauth2AzureAD "AZURE_AD"
|
||||
, loadPlugin (oauth2Auth0Host $ fromString auth0Host) "AUTH0"
|
||||
, loadPlugin (oauth2BattleNet [whamlet|TODO|] "en") "BATTLE_NET"
|
||||
, loadPlugin oauth2Bitbucket "BITBUCKET"
|
||||
, loadPlugin oauth2ClassLink "CLASSLINK"
|
||||
, loadPlugin (oauth2Eve Plain) "EVE_ONLINE"
|
||||
, loadPlugin oauth2GitHub "GITHUB"
|
||||
, loadPlugin oauth2GitLab "GITLAB"
|
||||
, loadPlugin oauth2Google "GOOGLE"
|
||||
, loadPlugin oauth2Nylas "NYLAS"
|
||||
, loadPlugin oauth2Salesforce "SALES_FORCE"
|
||||
, loadPlugin oauth2Slack "SLACK"
|
||||
, loadPlugin (oauth2Spotify []) "SPOTIFY"
|
||||
, loadPlugin oauth2Twitch "TWITCH"
|
||||
, loadPlugin oauth2WordPressDotCom "WORDPRESS_DOT_COM"
|
||||
, loadPlugin oauth2Upcase "UPCASE"
|
||||
]
|
||||
appHttpManager <- newManager tlsManagerSettings
|
||||
appAuthPlugins <- sequence
|
||||
-- When Providers are added, add them here and update .env.example.
|
||||
-- Nothing else should need changing.
|
||||
--
|
||||
-- FIXME: oauth2BattleNet is quite annoying!
|
||||
--
|
||||
[ loadPlugin oauth2AzureAD "AZURE_AD"
|
||||
, loadPlugin (oauth2Auth0Host $ fromString auth0Host) "AUTH0"
|
||||
, loadPlugin (oauth2BattleNet [whamlet|TODO|] "en") "BATTLE_NET"
|
||||
, loadPlugin oauth2Bitbucket "BITBUCKET"
|
||||
, loadPlugin oauth2ClassLink "CLASSLINK"
|
||||
, loadPlugin (oauth2Eve Plain) "EVE_ONLINE"
|
||||
, loadPlugin oauth2GitHub "GITHUB"
|
||||
, loadPlugin oauth2GitLab "GITLAB"
|
||||
, loadPlugin oauth2Google "GOOGLE"
|
||||
, loadPlugin oauth2Nylas "NYLAS"
|
||||
, loadPlugin oauth2Salesforce "SALES_FORCE"
|
||||
, loadPlugin oauth2Slack "SLACK"
|
||||
, loadPlugin (oauth2Spotify []) "SPOTIFY"
|
||||
, loadPlugin oauth2Twitch "TWITCH"
|
||||
, loadPlugin oauth2WordPressDotCom "WORDPRESS_DOT_COM"
|
||||
, loadPlugin oauth2Upcase "UPCASE"
|
||||
]
|
||||
|
||||
return App { .. }
|
||||
where
|
||||
loadPlugin f prefix = do
|
||||
clientId <- getEnv $ prefix <> "_CLIENT_ID"
|
||||
clientSecret <- getEnv $ prefix <> "_CLIENT_SECRET"
|
||||
pure $ f (T.pack clientId) (T.pack clientSecret)
|
||||
return App { .. }
|
||||
where
|
||||
loadPlugin f prefix = do
|
||||
clientId <- getEnv $ prefix <> "_CLIENT_ID"
|
||||
clientSecret <- getEnv $ prefix <> "_CLIENT_SECRET"
|
||||
pure $ f (T.pack clientId) (T.pack clientSecret)
|
||||
|
||||
main :: IO ()
|
||||
main = runEnv 3000 =<< toWaiApp =<< mkFoundation
|
||||
|
||||
@ -11,10 +11,10 @@ module Yesod.Auth.OAuth2.Auth0
|
||||
, defaultAuth0Scopes
|
||||
) where
|
||||
|
||||
import Data.Aeson as Aeson
|
||||
import qualified Data.Text as T
|
||||
import Prelude
|
||||
import Yesod.Auth.OAuth2.Prelude
|
||||
import Data.Aeson as Aeson
|
||||
import qualified Data.Text as T
|
||||
import Prelude
|
||||
import Yesod.Auth.OAuth2.Prelude
|
||||
|
||||
-- | https://auth0.com/docs/api/authentication#get-user-info
|
||||
newtype User = User T.Text
|
||||
|
||||
Loading…
Reference in New Issue
Block a user