From 8427ab41285ec49db08720683426e596487e359c Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Fri, 18 Mar 2022 14:10:10 +0000 Subject: [PATCH] Restyled by brittany --- example/Main.hs | 154 ++++++++++++++++---------------- src/Yesod/Auth/OAuth2/Twitch.hs | 8 +- 2 files changed, 83 insertions(+), 79 deletions(-) diff --git a/example/Main.hs b/example/Main.hs index 91a8cb7..81039cb 100644 --- a/example/Main.hs +++ b/example/Main.hs @@ -21,40 +21,42 @@ -- 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.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.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.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.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 @@ -63,28 +65,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 @@ -127,38 +129,38 @@ getRootR = do mkFoundation :: IO App mkFoundation = do - loadEnv + loadEnv - 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 (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 (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 diff --git a/src/Yesod/Auth/OAuth2/Twitch.hs b/src/Yesod/Auth/OAuth2/Twitch.hs index 4fcc56f..5b5a59c 100644 --- a/src/Yesod/Auth/OAuth2/Twitch.hs +++ b/src/Yesod/Auth/OAuth2/Twitch.hs @@ -11,9 +11,9 @@ module Yesod.Auth.OAuth2.Twitch , oauth2TwitchScoped ) where -import Yesod.Auth.OAuth2.Prelude +import Yesod.Auth.OAuth2.Prelude -import qualified Data.Text.Encoding as T +import qualified Data.Text.Encoding as T newtype User = User Text @@ -50,7 +50,9 @@ oauth2TwitchScoped scopes clientId clientSecret = `withQuery` [scopeParam " " scopes] , oauth2TokenEndpoint = "https://id.twitch.tv/oauth2/token" `withQuery` [ ("client_id", T.encodeUtf8 clientId) - , ("client_secret", T.encodeUtf8 clientSecret) + , ( "client_secret" + , T.encodeUtf8 clientSecret + ) ] , oauth2RedirectUri = Nothing }