mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2026-10-18 04:41:19 +02:00
Merge pull request from GHSA-652x-m2gr-hppm
* Populate session Groups from userinfo response * Fix: gitlab tests Co-authored-by: Wilfried OLLIVIER <wollivier@bearstech.com>
This commit is contained in:
co-authored by
Wilfried OLLIVIER
parent
73d9f3809e
commit
0279fa7dff
+5
-17
@@ -295,21 +295,13 @@ func (p *GitLabProvider) EnrichSession(ctx context.Context, s *sessions.SessionS
|
||||
|
||||
s.User = userInfo.Username
|
||||
s.Email = userInfo.Email
|
||||
|
||||
p.addGroupsToSession(ctx, s)
|
||||
for _, group := range userInfo.Groups {
|
||||
s.Groups = append(s.Groups, fmt.Sprintf("group:%s", group))
|
||||
}
|
||||
|
||||
p.addProjectsToSession(ctx, s)
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
// addGroupsToSession projects into session.Groups
|
||||
func (p *GitLabProvider) addGroupsToSession(ctx context.Context, s *sessions.SessionState) {
|
||||
// Iterate over projects, check if oauth2-proxy can get project information on behalf of the user
|
||||
for _, group := range p.Groups {
|
||||
s.Groups = append(s.Groups, fmt.Sprintf("group:%s", group))
|
||||
}
|
||||
}
|
||||
|
||||
// addProjectsToSession adds projects matching user access requirements into the session state groups list
|
||||
@@ -341,24 +333,20 @@ func (p *GitLabProvider) addProjectsToSession(ctx context.Context, s *sessions.S
|
||||
} else {
|
||||
logger.Errorf("Warning: user %q does not have the minimum required access level for project %q", s.Email, project.Name)
|
||||
}
|
||||
} else {
|
||||
logger.Errorf("Warning: project %s is archived", project.Name)
|
||||
continue
|
||||
}
|
||||
|
||||
logger.Errorf("Warning: project %s is archived", project.Name)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// PrefixAllowedGroups returns a list of allowed groups, prefixed by their `kind` value
|
||||
func (p *GitLabProvider) PrefixAllowedGroups() (groups []string) {
|
||||
|
||||
for _, val := range p.Groups {
|
||||
groups = append(groups, fmt.Sprintf("group:%s", val))
|
||||
}
|
||||
|
||||
for _, val := range p.Projects {
|
||||
groups = append(groups, fmt.Sprintf("project:%s", val.Name))
|
||||
}
|
||||
|
||||
return groups
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user