From 570d146b2173791f6cd12f1c5ecdadaf02589d91 Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 9 Jun 2021 21:56:17 +0200 Subject: [PATCH] Fix parsing openid config when using a json config file --- pkg/modules/auth/openid/providers.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/modules/auth/openid/providers.go b/pkg/modules/auth/openid/providers.go index 6482a3188..8db4da0a6 100644 --- a/pkg/modules/auth/openid/providers.go +++ b/pkg/modules/auth/openid/providers.go @@ -46,7 +46,18 @@ func GetAllProviders() (providers []*Provider, err error) { rawProvider := rawProviders.([]interface{}) for _, p := range rawProvider { - pi := p.(map[interface{}]interface{}) + var pi map[string]interface{} + var is bool + pi, is = p.(map[string]interface{}) + // JSON config is a map[string]interface{}, other providers are not. Under the hood they are all strings so + // it is save to cast. + if !is { + pis := p.(map[interface{}]interface{}) + pi = make(map[string]interface{}, len(pis)) + for i, s := range pis { + pi[i.(string)] = s + } + } provider, err := getProviderFromMap(pi) if err != nil { @@ -99,7 +110,7 @@ func getKeyFromName(name string) string { return reg.ReplaceAllString(strings.ToLower(name), "") } -func getProviderFromMap(pi map[interface{}]interface{}) (provider *Provider, err error) { +func getProviderFromMap(pi map[string]interface{}) (provider *Provider, err error) { name, is := pi["name"].(string) if !is { return nil, nil