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