You've already forked oauth2-proxy
mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2025-06-15 00:15:00 +02:00
Add allowed_emails option to the auth endpoint query string (#1595)
* Add allowed_emails option to the auth endpoint query string * Don't return true from checkAllowedEmailsOrDomains only because domains field was empty * Fix checkAllowedEmailsOrDomains logic * Added tests for allowed_emails query parameter * Updated CHANGELOG * Remove checkAllowedEmailsOrDomains Co-authored-by: Nick Meves <nicholas.meves@gmail.com>
This commit is contained in:
@ -1021,6 +1021,7 @@ func authOnlyAuthorize(req *http.Request, s *sessionsapi.SessionState) bool {
|
||||
constraints := []func(*http.Request, *sessionsapi.SessionState) bool{
|
||||
checkAllowedGroups,
|
||||
checkAllowedEmailDomains,
|
||||
checkAllowedEmails,
|
||||
}
|
||||
|
||||
for _, constraint := range constraints {
|
||||
@ -1091,6 +1092,26 @@ func checkAllowedGroups(req *http.Request, s *sessionsapi.SessionState) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// checkAllowedEmails allow email restrictions based on the `allowed_emails`
|
||||
// querystring parameter
|
||||
func checkAllowedEmails(req *http.Request, s *sessionsapi.SessionState) bool {
|
||||
allowedEmails := extractAllowedEntities(req, "allowed_emails")
|
||||
if len(allowedEmails) == 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
allowed := false
|
||||
|
||||
for email := range allowedEmails {
|
||||
if email == s.Email {
|
||||
allowed = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return allowed
|
||||
}
|
||||
|
||||
// encodedState builds the OAuth state param out of our nonce and
|
||||
// original application redirect
|
||||
func encodeState(nonce string, redirect string) string {
|
||||
|
Reference in New Issue
Block a user