Refactor getting auth providers
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/pr Build is failing
Details
This commit is contained in:
parent
74e925a97a
commit
8f336c3441
|
@ -17,6 +17,8 @@
|
|||
package openid
|
||||
|
||||
import (
|
||||
"code.vikunja.io/api/pkg/modules/keyvalue"
|
||||
kerr "code.vikunja.io/api/pkg/modules/keyvalue/error"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"math/rand"
|
||||
|
@ -71,17 +73,31 @@ func getKeyFromName(name string) string {
|
|||
|
||||
// GetAllProviders returns all configured providers
|
||||
func GetAllProviders() (providers []*Provider, err error) {
|
||||
rawProvider := config.AuthOpenIDProviders.Get().([]interface{})
|
||||
ps, err := keyvalue.Get("openid_providers")
|
||||
if err != nil && kerr.IsErrValueNotFoundForKey(err) {
|
||||
rawProvider := config.AuthOpenIDProviders.Get().([]interface{})
|
||||
|
||||
for _, p := range rawProvider {
|
||||
pi := p.(map[interface{}]interface{})
|
||||
for _, p := range rawProvider {
|
||||
pi := p.(map[interface{}]interface{})
|
||||
|
||||
provider, err := getProviderFromMap(pi)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
provider, err := getProviderFromMap(pi)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
providers = append(providers, provider)
|
||||
|
||||
k := getKeyFromName(pi["name"].(string))
|
||||
err = keyvalue.Put("openid_provider_"+k, provider)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
err = keyvalue.Put("openid_providers", providers)
|
||||
}
|
||||
|
||||
providers = append(providers, provider)
|
||||
if ps != nil {
|
||||
return ps.([]*Provider), nil
|
||||
}
|
||||
|
||||
return
|
||||
|
@ -128,19 +144,23 @@ func getProviderFromMap(pi map[interface{}]interface{}) (*Provider, error) {
|
|||
}
|
||||
|
||||
// GetProvider retrieves a provider from keyvalue
|
||||
func GetProvider(key string) (*Provider, error) {
|
||||
rawProvider := config.AuthOpenIDProviders.Get().([]interface{})
|
||||
|
||||
for _, p := range rawProvider {
|
||||
pi := p.(map[interface{}]interface{})
|
||||
|
||||
k := getKeyFromName(pi["name"].(string))
|
||||
if k == key {
|
||||
return getProviderFromMap(pi)
|
||||
func GetProvider(key string) (provider *Provider, err error) {
|
||||
var p interface{}
|
||||
p, err = keyvalue.Get("openid_provider_" + key)
|
||||
if err != nil && kerr.IsErrValueNotFoundForKey(err) {
|
||||
_, err = GetAllProviders() // This will put all providers in cache
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p, err = keyvalue.Get("openid_provider_" + key)
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
if p != nil {
|
||||
return p.(*Provider), nil
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// HandleCallback handles the auth request callback after redirecting from the provider with an auth code
|
||||
|
|
|
@ -21,8 +21,6 @@ import (
|
|||
|
||||
"code.vikunja.io/api/pkg/config"
|
||||
"code.vikunja.io/api/pkg/modules/auth/openid"
|
||||
"code.vikunja.io/api/pkg/modules/keyvalue"
|
||||
kerr "code.vikunja.io/api/pkg/modules/keyvalue/error"
|
||||
"code.vikunja.io/api/pkg/modules/migration/todoist"
|
||||
"code.vikunja.io/api/pkg/modules/migration/wunderlist"
|
||||
"code.vikunja.io/api/pkg/version"
|
||||
|
@ -98,21 +96,12 @@ func Info(c echo.Context) error {
|
|||
},
|
||||
}
|
||||
|
||||
var providers interface{}
|
||||
var err error
|
||||
providers, err = keyvalue.Get("openid_providers")
|
||||
if err != nil && kerr.IsErrValueNotFoundForKey(err) {
|
||||
providers, err = openid.GetAllProviders()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = keyvalue.Put("openid_providers", providers)
|
||||
}
|
||||
providers, err := openid.GetAllProviders()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
info.AuthInfo.OpenIDConnect.Providers = providers.([]*openid.Provider)
|
||||
info.AuthInfo.OpenIDConnect.Providers = providers
|
||||
|
||||
// Migrators
|
||||
if config.MigrationWunderlistEnable.GetBool() {
|
||||
|
|
Loading…
Reference in New Issue