diff --git a/Yesod/Auth/OAuth2.hs b/Yesod/Auth/OAuth2.hs
index 39012b6..849eeee 100644
--- a/Yesod/Auth/OAuth2.hs
+++ b/Yesod/Auth/OAuth2.hs
@@ -57,17 +57,17 @@ authOAuth2 name oauth getCreds = AuthPlugin name dispatch login
withCallback csrfToken = do
tm <- getRouteToParent
- render <- lift $ getUrlRender
- let newEndpoint = oauthOAuthorizeEndpoint oauth <> "&state=" <> encodeUtf8 csrfToken
- return $ oauth {
- oauthCallback = Just $ encodeUtf8 $ render $ tm url,
- oauthOAuthorizeEndpoint = newEndpoint
+ render <- lift getUrlRender
+ return oauth
+ { oauthCallback = Just $ encodeUtf8 $ render $ tm url
+ , oauthOAuthorizeEndpoint = oauthOAuthorizeEndpoint oauth
+ <> "&state=" <> encodeUtf8 csrfToken
}
dispatch "GET" ["forward"] = do
- csrfToken <- liftIO $ generateToken
+ csrfToken <- liftIO generateToken
setSession tokenSessionKey csrfToken
- authUrl <- (bsToText . authorizationUrl) <$> withCallback csrfToken
+ authUrl <- bsToText . authorizationUrl <$> withCallback csrfToken
lift $ redirect authUrl
dispatch "GET" ["callback"] = do
@@ -90,15 +90,14 @@ authOAuth2 name oauth getCreds = AuthPlugin name dispatch login
dispatch _ _ = notFound
- generateToken = (pack . take 30 . randomRs ('a','z')) <$> newStdGen
+ generateToken = pack . take 30 . randomRs ('a', 'z') <$> newStdGen
tokenSessionKey :: Text
tokenSessionKey = "_yesod_oauth2_" <> name
- login tm = do
- render <- getUrlRender
- let oaUrl = render $ tm $ oauth2Url name
- [whamlet| Login via #{name} |]
+ login tm = [whamlet|
+ Login via #{name}
+ |]
bsToText :: ByteString -> Text
bsToText = decodeUtf8With lenientDecode