|
|
|
|
@ -9,6 +9,7 @@ import (
|
|
|
|
|
"fmt" |
|
|
|
|
"io" |
|
|
|
|
"net/http" |
|
|
|
|
"strings" |
|
|
|
|
"sync" |
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
@ -51,6 +52,7 @@ type Config struct {
|
|
|
|
|
Groups []string `json:"groups"` |
|
|
|
|
GroupNameFormat GroupNameFormat `json:"groupNameFormat"` |
|
|
|
|
UseGroupsAsWhitelist bool `json:"useGroupsAsWhitelist"` |
|
|
|
|
EmailToLowercase bool `json:"emailToLowercase"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Open returns a strategy for logging in through Microsoft.
|
|
|
|
|
@ -67,6 +69,7 @@ func (c *Config) Open(id string, logger log.Logger) (connector.Connector, error)
|
|
|
|
|
groupNameFormat: c.GroupNameFormat, |
|
|
|
|
useGroupsAsWhitelist: c.UseGroupsAsWhitelist, |
|
|
|
|
logger: logger, |
|
|
|
|
emailToLowercase: c.EmailToLowercase, |
|
|
|
|
} |
|
|
|
|
// By default allow logins from both personal and business/school
|
|
|
|
|
// accounts.
|
|
|
|
|
@ -109,6 +112,7 @@ type microsoftConnector struct {
|
|
|
|
|
groups []string |
|
|
|
|
useGroupsAsWhitelist bool |
|
|
|
|
logger log.Logger |
|
|
|
|
emailToLowercase bool |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (c *microsoftConnector) isOrgTenant() bool { |
|
|
|
|
@ -171,6 +175,10 @@ func (c *microsoftConnector) HandleCallback(s connector.Scopes, r *http.Request)
|
|
|
|
|
return identity, fmt.Errorf("microsoft: get user: %v", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if c.emailToLowercase { |
|
|
|
|
user.Email = strings.ToLower(user.Email) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
identity = connector.Identity{ |
|
|
|
|
UserID: user.ID, |
|
|
|
|
Username: user.Name, |
|
|
|
|
|