diff --git a/service/internal/auth/otoauth2/restapi_auth_oauth2.go b/service/internal/auth/otoauth2/restapi_auth_oauth2.go index e39c64f..836ca88 100644 --- a/service/internal/auth/otoauth2/restapi_auth_oauth2.go +++ b/service/internal/auth/otoauth2/restapi_auth_oauth2.go @@ -263,10 +263,21 @@ func (h *OAuth2Handler) HandleOAuthCallback(w http.ResponseWriter, r *http.Reque Timeout: clientSettings.Timeout, } - userinfo := getUserInfo(h.cfg, userInfoClient, h.cfg.AuthOAuth2Providers[registeredState.providerName]) + userinfo := getUserInfo(h.cfg, userInfoClient, providerConfig) h.registeredStates[state].Username = userinfo.Username - h.registeredStates[state].Usergroup = userinfo.Usergroup + + usergroup := userinfo.Usergroup + if providerConfig != nil && providerConfig.AddToUsergroup != "" { + // Append configured usergroup name if addToUsergroup is set + if usergroup != "" { + usergroup = usergroup + " " + providerConfig.AddToUsergroup + } else { + usergroup = providerConfig.AddToUsergroup + } + } + + h.registeredStates[state].Usergroup = usergroup http.Redirect(w, r, "/", http.StatusFound) } diff --git a/service/internal/config/config.go b/service/internal/config/config.go index c7de2db..722e492 100644 --- a/service/internal/config/config.go +++ b/service/internal/config/config.go @@ -184,6 +184,7 @@ type OAuth2Provider struct { InsecureSkipVerify bool `koanf:"insecureSkipVerify"` CallbackTimeout int `koanf:"callbackTimeout"` CertBundlePath string `koanf:"certBundlePath"` + AddToUsergroup string `koanf:"addToUsergroup"` } type NavigationLink struct {