mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-01-11 19:58:28 +01:00
Store refreshToken in credsExtra, if available
This commit is contained in:
parent
d9eeb787d6
commit
44c05d7a2d
@ -19,6 +19,7 @@ module Yesod.Auth.OAuth2
|
||||
|
||||
-- * Reading our @'credsExtra'@ keys
|
||||
, getAccessToken
|
||||
, getRefreshToken
|
||||
, getUserResponse
|
||||
, getUserResponseJSON
|
||||
) where
|
||||
@ -67,6 +68,14 @@ getAccessToken :: Creds m -> Maybe AccessToken
|
||||
getAccessToken =
|
||||
(AccessToken <$>) . lookup "accessToken" . credsExtra
|
||||
|
||||
-- | Read the @'RefreshToken'@ from the values set via @'setExtra'@
|
||||
--
|
||||
-- N.B. not all providers supply this value.
|
||||
--
|
||||
getRefreshToken :: Creds m -> Maybe RefreshToken
|
||||
getRefreshToken =
|
||||
(RefreshToken <$>) . lookup "refreshToken" . credsExtra
|
||||
|
||||
-- | Read the original profile response from the values set via @'setExtra'@
|
||||
getUserResponse :: Creds m -> Maybe ByteString
|
||||
getUserResponse =
|
||||
|
||||
@ -114,13 +114,18 @@ scopeParam d = ("scope",) . encodeUtf8 . T.intercalate d
|
||||
|
||||
-- | Construct part of @'credsExtra'@
|
||||
--
|
||||
-- Sets the following keys:
|
||||
-- Always the following keys:
|
||||
--
|
||||
-- - @accessToken@: to support follow-up requests
|
||||
-- - @userResponse@: to support getting additional information
|
||||
--
|
||||
-- May set the following keys:
|
||||
--
|
||||
-- - @refreshToken@: if the provider supports refreshing the @accessToken@
|
||||
--
|
||||
setExtra :: OAuth2Token -> BL.ByteString -> [(Text, Text)]
|
||||
setExtra token userResponse =
|
||||
[ ("accessToken", atoken $ accessToken token)
|
||||
, ("userResponse", decodeUtf8 $ BL.toStrict userResponse)
|
||||
]
|
||||
<> maybe [] (pure . ("refreshToken",) . rtoken) (refreshToken token)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user