mirror of
https://github.com/h44z/wg-portal.git
synced 2026-05-28 08:56:17 +00:00
feat: sanitize external identity provider user data (#681)
* feat: sanitize external user data * remove config option to disable Sanitization: sanitize_external_user_data * cleanup --------- Co-authored-by: Christoph Haas <christoph.h@sprinternet.at>
This commit is contained in:
@@ -13,6 +13,8 @@ func parseOauthUserInfo(
|
||||
mapping config.OauthFields,
|
||||
adminMapping *config.OauthAdminMapping,
|
||||
raw map[string]any,
|
||||
providerType string,
|
||||
providerName string,
|
||||
) (*domain.AuthenticatorUserInfo, error) {
|
||||
var isAdmin bool
|
||||
var adminInfoAvailable bool
|
||||
@@ -27,18 +29,6 @@ func parseOauthUserInfo(
|
||||
}
|
||||
}
|
||||
|
||||
// next try to parse the user's groups
|
||||
if !isAdmin && mapping.UserGroups != "" && adminMapping.AdminGroupRegex != "" {
|
||||
adminInfoAvailable = true
|
||||
re := adminMapping.GetAdminGroupRegex()
|
||||
for _, group := range userGroups {
|
||||
if re.MatchString(strings.TrimSpace(group)) {
|
||||
isAdmin = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
userInfo := &domain.AuthenticatorUserInfo{
|
||||
Identifier: domain.UserIdentifier(internal.MapDefaultString(raw, mapping.UserIdentifier, "")),
|
||||
Email: internal.MapDefaultString(raw, mapping.Email, ""),
|
||||
@@ -51,6 +41,24 @@ func parseOauthUserInfo(
|
||||
AdminInfoAvailable: adminInfoAvailable,
|
||||
}
|
||||
|
||||
if err := userInfo.Sanitize(providerType, providerName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// check admin group match after sanitization
|
||||
if !isAdmin && mapping.UserGroups != "" && adminMapping.AdminGroupRegex != "" {
|
||||
adminInfoAvailable = true
|
||||
re := adminMapping.GetAdminGroupRegex()
|
||||
for _, group := range userInfo.UserGroups {
|
||||
if re.MatchString(group) {
|
||||
isAdmin = true
|
||||
break
|
||||
}
|
||||
}
|
||||
userInfo.IsAdmin = isAdmin
|
||||
userInfo.AdminInfoAvailable = adminInfoAvailable
|
||||
}
|
||||
|
||||
return userInfo, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user