From 34dbff838828e3f32d250b598c740a40737a0aee Mon Sep 17 00:00:00 2001 From: "Kefah T. Issa" <kefah.issa@gmail.com> Date: Sun, 27 Sep 2020 12:15:02 +0300 Subject: [PATCH 1/2] Retrieve github user email One additional api call is required to retrieve the github user's email. The returned json i format is ```json [ {"email":"email ... address", ...}] ``` For simplicity it was done as a one-liner. --- src/multi_auth/providers/github.cr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/multi_auth/providers/github.cr b/src/multi_auth/providers/github.cr index 9d6b025..c1ffe66 100644 --- a/src/multi_auth/providers/github.cr +++ b/src/multi_auth/providers/github.cr @@ -58,6 +58,8 @@ class MultiAuth::Provider::Github < MultiAuth::Provider gh_user = GhUser.from_json(raw_json) gh_user.access_token = access_token gh_user.raw_json = raw_json + raw_email_json = api.get("/user/emails").body + gh_user.email = JSON.parse(raw_email_json)[0]["email"].to_s gh_user end From 44efdac2626f6ed66974846d06f37f57905f05c1 Mon Sep 17 00:00:00 2001 From: "Kefah T. Issa" <kefah.issa@gmail.com> Date: Sun, 9 May 2021 07:14:54 +0300 Subject: [PATCH 2/2] Guard against empty / incaccessible user email Absorb exceptions if the requested user email is not accessible. --- src/multi_auth/providers/github.cr | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/multi_auth/providers/github.cr b/src/multi_auth/providers/github.cr index c1ffe66..5564fa2 100644 --- a/src/multi_auth/providers/github.cr +++ b/src/multi_auth/providers/github.cr @@ -58,8 +58,11 @@ class MultiAuth::Provider::Github < MultiAuth::Provider gh_user = GhUser.from_json(raw_json) gh_user.access_token = access_token gh_user.raw_json = raw_json - raw_email_json = api.get("/user/emails").body - gh_user.email = JSON.parse(raw_email_json)[0]["email"].to_s + begin + raw_email_json = api.get("/user/emails").body + gh_user.email = JSON.parse(raw_email_json)[0]["email"].to_s + rescue + end gh_user end