aboutsummaryrefslogtreecommitdiff
path: root/server/auth/github/github.go
diff options
context:
space:
mode:
authorNiall Sheridan <nsheridan@gmail.com>2016-06-14 21:29:48 +0100
committerNiall Sheridan <nsheridan@gmail.com>2016-06-14 22:42:37 +0100
commitcd138ddf742d124aea3d1e7f155735576459be67 (patch)
treecc55353786fcbe1424abd18382f32ab63e3473a2 /server/auth/github/github.go
parent77c2a94644dd7ec9c3ae8c995c32f2ad8d90a7b1 (diff)
Update whitelisting
Whitelist Google users based on their email address instead of the username part of the email address. Plain gmail (non Google Apps) accounts don't necessarily end in '@gmail.com', and whitelisting on username alone is open to abuse. Skip testing for a Google Apps domain (ui.Hd) if no domain is configured. Principals will still be added as the user part of the email address. For the Github provider, skip checking that the user is a member of an organization is none is configured.
Diffstat (limited to 'server/auth/github/github.go')
-rw-r--r--server/auth/github/github.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/server/auth/github/github.go b/server/auth/github/github.go
index 912caae..24a4bbf 100644
--- a/server/auth/github/github.go
+++ b/server/auth/github/github.go
@@ -62,12 +62,17 @@ func (c *Config) Name() string {
// Valid validates the oauth token.
func (c *Config) Valid(token *oauth2.Token) bool {
- if len(c.whitelist) == 0 && !c.whitelist[c.Username(token)] {
+ if len(c.whitelist) > 0 && !c.whitelist[c.Username(token)] {
return false
}
if !token.Valid() {
return false
}
+ if c.organization == "" {
+ // There's no organization and the token is valid. Can only reach here
+ // if there's a user whitelist set and the user is in the whitelist.
+ return true
+ }
client := githubapi.NewClient(c.newClient(token))
member, _, err := client.Organizations.IsMember(c.organization, c.Username(token))
if err != nil {