mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-01-11 19:58:28 +01:00
Make Github name optional
The github API returns no name field if the user has given none (and only goes by their user handle). For that reason, make the name field optional.
This commit is contained in:
parent
d2e384c1aa
commit
81ece8072f
@ -32,7 +32,7 @@ import qualified Data.Text as T
|
||||
|
||||
data GithubUser = GithubUser
|
||||
{ githubUserId :: Int
|
||||
, githubUserName :: Text
|
||||
, githubUserName :: Maybe Text
|
||||
, githubUserLogin :: Text
|
||||
, githubUserAvatarUrl :: Text
|
||||
}
|
||||
@ -40,7 +40,7 @@ data GithubUser = GithubUser
|
||||
instance FromJSON GithubUser where
|
||||
parseJSON (Object o) =
|
||||
GithubUser <$> o .: "id"
|
||||
<*> o .: "name"
|
||||
<*> o .:? "name"
|
||||
<*> o .: "login"
|
||||
<*> o .: "avatar_url"
|
||||
|
||||
@ -113,9 +113,12 @@ fetchGithubProfile manager token = do
|
||||
toCreds :: GithubUser -> [GithubUserEmail] -> AccessToken -> Creds m
|
||||
toCreds user userMail token = Creds "github"
|
||||
(T.pack $ show $ githubUserId user)
|
||||
[ ("name", githubUserName user)
|
||||
, ("email", githubUserEmail $ head userMail)
|
||||
, ("login", githubUserLogin user)
|
||||
, ("avatar_url", githubUserAvatarUrl user)
|
||||
, ("access_token", decodeUtf8 $ accessToken token)
|
||||
]
|
||||
cExtra
|
||||
where
|
||||
cExtra = [ ("email", githubUserEmail $ head userMail)
|
||||
, ("login", githubUserLogin user)
|
||||
, ("avatar_url", githubUserAvatarUrl user)
|
||||
, ("access_token", decodeUtf8 $ accessToken token)
|
||||
] ++ (maybeName $ githubUserName user)
|
||||
maybeName Nothing = []
|
||||
maybeName (Just name) = [("name", name)]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user