mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-03-03 03:44:35 +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
|
-- * Reading our @'credsExtra'@ keys
|
||||||
, getAccessToken
|
, getAccessToken
|
||||||
|
, getRefreshToken
|
||||||
, getUserResponse
|
, getUserResponse
|
||||||
, getUserResponseJSON
|
, getUserResponseJSON
|
||||||
) where
|
) where
|
||||||
@ -67,6 +68,14 @@ getAccessToken :: Creds m -> Maybe AccessToken
|
|||||||
getAccessToken =
|
getAccessToken =
|
||||||
(AccessToken <$>) . lookup "accessToken" . credsExtra
|
(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'@
|
-- | Read the original profile response from the values set via @'setExtra'@
|
||||||
getUserResponse :: Creds m -> Maybe ByteString
|
getUserResponse :: Creds m -> Maybe ByteString
|
||||||
getUserResponse =
|
getUserResponse =
|
||||||
|
|||||||
@ -114,13 +114,18 @@ scopeParam d = ("scope",) . encodeUtf8 . T.intercalate d
|
|||||||
|
|
||||||
-- | Construct part of @'credsExtra'@
|
-- | Construct part of @'credsExtra'@
|
||||||
--
|
--
|
||||||
-- Sets the following keys:
|
-- Always the following keys:
|
||||||
--
|
--
|
||||||
-- - @accessToken@: to support follow-up requests
|
-- - @accessToken@: to support follow-up requests
|
||||||
-- - @userResponse@: to support getting additional information
|
-- - @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 :: OAuth2Token -> BL.ByteString -> [(Text, Text)]
|
||||||
setExtra token userResponse =
|
setExtra token userResponse =
|
||||||
[ ("accessToken", atoken $ accessToken token)
|
[ ("accessToken", atoken $ accessToken token)
|
||||||
, ("userResponse", decodeUtf8 $ BL.toStrict userResponse)
|
, ("userResponse", decodeUtf8 $ BL.toStrict userResponse)
|
||||||
]
|
]
|
||||||
|
<> maybe [] (pure . ("refreshToken",) . rtoken) (refreshToken token)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user