|
|
|
@ -88,6 +88,10 @@ func (s *SSOSettingsService) GetForProvider(ctx context.Context, provider string |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *SSOSettingsService) GetForProviderWithRedactedSecrets(ctx context.Context, provider string) (*models.SSOSettings, error) { |
|
|
|
|
if !s.isProviderConfigurable(provider) { |
|
|
|
|
return nil, ssosettings.ErrNotConfigurable |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
storeSettings, err := s.GetForProvider(ctx, provider) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
@ -136,7 +140,14 @@ func (s *SSOSettingsService) ListWithRedactedSecrets(ctx context.Context) ([]*mo |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, storeSetting := range storeSettings { |
|
|
|
|
configurableSettings := make([]*models.SSOSettings, 0, len(s.cfg.SSOSettingsConfigurableProviders)) |
|
|
|
|
for _, provider := range storeSettings { |
|
|
|
|
if s.isProviderConfigurable(provider.Provider) { |
|
|
|
|
configurableSettings = append(configurableSettings, provider) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, storeSetting := range configurableSettings { |
|
|
|
|
for k, v := range storeSetting.Settings { |
|
|
|
|
if strVal, ok := v.(string); ok { |
|
|
|
|
storeSetting.Settings[k] = setting.RedactedValue(k, strVal) |
|
|
|
@ -144,12 +155,12 @@ func (s *SSOSettingsService) ListWithRedactedSecrets(ctx context.Context) ([]*mo |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return storeSettings, nil |
|
|
|
|
return configurableSettings, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *SSOSettingsService) Upsert(ctx context.Context, settings *models.SSOSettings) error { |
|
|
|
|
if !isProviderConfigurable(settings.Provider) { |
|
|
|
|
return ssosettings.ErrInvalidProvider.Errorf("provider %s is not configurable", settings.Provider) |
|
|
|
|
if !s.isProviderConfigurable(settings.Provider) { |
|
|
|
|
return ssosettings.ErrNotConfigurable |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
social, ok := s.reloadables[settings.Provider] |
|
|
|
@ -195,6 +206,9 @@ func (s *SSOSettingsService) Patch(ctx context.Context, provider string, data ma |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *SSOSettingsService) Delete(ctx context.Context, provider string) error { |
|
|
|
|
if !s.isProviderConfigurable(provider) { |
|
|
|
|
return ssosettings.ErrNotConfigurable |
|
|
|
|
} |
|
|
|
|
return s.store.Delete(ctx, provider) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -365,6 +379,11 @@ func (s *SSOSettingsService) decryptSecrets(ctx context.Context, settings map[st |
|
|
|
|
return settings, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *SSOSettingsService) isProviderConfigurable(provider string) bool { |
|
|
|
|
_, ok := s.cfg.SSOSettingsConfigurableProviders[provider] |
|
|
|
|
return ok |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// removeSecrets removes all the secrets from the map and replaces them with a redacted password
|
|
|
|
|
// and returns a new map
|
|
|
|
|
func removeSecrets(settings map[string]any) map[string]any { |
|
|
|
@ -434,16 +453,6 @@ func isSecret(fieldName string) bool { |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func isProviderConfigurable(provider string) bool { |
|
|
|
|
for _, configurable := range ssosettings.ConfigurableOAuthProviders { |
|
|
|
|
if provider == configurable { |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func isNewSecretValue(value string) bool { |
|
|
|
|
return value != setting.RedactedPassword |
|
|
|
|
} |
|
|
|
|