git.iko.soy/typeable/oauth2-proxy
on master help sign in
fix: check if it is both primary and verified
commit24f36f27a73a7ec2bcd687220e1f9688fc293783 authorCarlos Alexandro Becker <caarlos0@gmail.com> dateWed 20 Mar 2019, 13:52 (8 years ago) parent95ee435
2 files changed+18−4
providers/github.go+2−1 providers/github_test.go+16−3
providers/github.go+2−1
@@ -203,6 +203,7 @@ func (p *GitHubProvider) GetEmailAddress(s *SessionState) (string, error) {
203203
204204 var emails []struct {
205205 Email string `json:"email"`
206+ Primary bool `json:"primary"`
206207 Verified bool `json:"verified"`
207208 }
208209
@@ -248,7 +249,7 @@ func (p *GitHubProvider) GetEmailAddress(s *SessionState) (string, error) {
248249 }
249250
250251 for _, email := range emails {
251− if email.Verified {
252+ if email.Primary && email.Verified {
252253 return email.Email, nil
253254 }
254255 }
providers/github_test.go+16−3
@@ -97,7 +97,7 @@ func TestGitHubProviderOverrides(t *testing.T) {
9797}
9898
9999func TestGitHubProviderGetEmailAddress(t *testing.T) {
100− b := testGitHubBackend([]string{`[ {"email": "michael.bland@gsa.gov", "verified": true} ]`})
100+ b := testGitHubBackend([]string{`[ {"email": "michael.bland@gsa.gov", "verified": true, "primary": true} ]`})
101101 defer b.Close()
102102
103103 bURL, _ := url.Parse(b.URL)
@@ -109,10 +109,23 @@ func TestGitHubProviderGetEmailAddress(t *testing.T) {
109109 assert.Equal(t, "michael.bland@gsa.gov", email)
110110}
111111
112+func TestGitHubProviderGetEmailAddressNotVerified(t *testing.T) {
113+ b := testGitHubBackend([]string{`[ {"email": "michael.bland@gsa.gov", "verified": false, "primary": true} ]`})
114+ defer b.Close()
115+
116+ bURL, _ := url.Parse(b.URL)
117+ p := testGitHubProvider(bURL.Host)
118+
119+ session := &SessionState{AccessToken: "imaginary_access_token"}
120+ email, err := p.GetEmailAddress(session)
121+ assert.Equal(t, nil, err)
122+ assert.Empty(t, "", email)
123+}
124+
112125func TestGitHubProviderGetEmailAddressWithOrg(t *testing.T) {
113126 b := testGitHubBackend([]string{
114− `[ {"email": "michael.bland@gsa.gov", "verified": true, "login":"testorg"} ]`,
115− `[ {"email": "michael.bland1@gsa.gov", "verified": true, "login":"testorg1"} ]`,
127+ `[ {"email": "michael.bland@gsa.gov", "primary": true, "verified": true, "login":"testorg"} ]`,
128+ `[ {"email": "michael.bland1@gsa.gov", "primary": true, "verified": true, "login":"testorg1"} ]`,
116129 `[ ]`,
117130 })
118131 defer b.Close()