diff --git a/internal/bootstrap/app_bootstrap.go b/internal/bootstrap/app_bootstrap.go index dc31ac2..b9c3830 100644 --- a/internal/bootstrap/app_bootstrap.go +++ b/internal/bootstrap/app_bootstrap.go @@ -147,10 +147,6 @@ func (app *BootstrapApp) Setup() error { } // Configured providers - babysit := map[string]string{ - "google": "Google", - "github": "GitHub", - } configuredProviders := make([]controller.Provider, 0) for id, provider := range oauthProviders { @@ -159,7 +155,7 @@ func (app *BootstrapApp) Setup() error { } if provider.Name == "" { - if name, ok := babysit[id]; ok { + if name, ok := config.OverrideProviders[id]; ok { provider.Name = name } else { provider.Name = utils.Capitalize(id) diff --git a/internal/config/config.go b/internal/config/config.go index 28c14df..23c3832 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -65,6 +65,11 @@ type OAuthServiceConfig struct { Name string `key:"name"` } +var OverrideProviders = map[string]string{ + "google": "Google", + "github": "GitHub", +} + // User/session related stuff type User struct { diff --git a/internal/service/auth_service.go b/internal/service/auth_service.go index 8925e49..4cd66b8 100644 --- a/internal/service/auth_service.go +++ b/internal/service/auth_service.go @@ -309,12 +309,14 @@ func (auth *AuthService) IsInOAuthGroup(c *gin.Context, context config.UserConte return true } - if context.Provider != "generic" { - log.Debug().Msg("Not using generic provider, skipping group check") - return true + for id := range config.OverrideProviders { + if context.Provider == id { + log.Info().Str("provider", id).Msg("OAuth groups not supported for this provider") + return true + } } - for _, userGroup := range strings.Split(context.OAuthGroups, ",") { + for userGroup := range strings.SplitSeq(context.OAuthGroups, ",") { if utils.CheckFilter(requiredGroups, strings.TrimSpace(userGroup)) { return true } diff --git a/internal/utils/app_utils.go b/internal/utils/app_utils.go index 643c9cf..42649cd 100644 --- a/internal/utils/app_utils.go +++ b/internal/utils/app_utils.go @@ -183,14 +183,13 @@ func GetOAuthProvidersConfig(env []string, args []string, appUrl string) (map[st providers[name] = provider } - // If we have google/github providers and no redirect URL babysit them - babysitProviders := []string{"google", "github"} + // If we have google/github providers and no redirect URL then set a default - for _, name := range babysitProviders { - if provider, exists := providers[name]; exists { + for id := range config.OverrideProviders { + if provider, exists := providers[id]; exists { if provider.RedirectURL == "" { - provider.RedirectURL = appUrl + "/api/oauth/callback/" + name - providers[name] = provider + provider.RedirectURL = appUrl + "/api/oauth/callback/" + id + providers[id] = provider } } }