External provider logic fixed & cleaned-up
This commit is contained in:
parent
10dd0226c1
commit
a54ac08b43
@ -87,7 +87,7 @@ func (ctrl *Auth) Settings(ctx context.Context, r *request.AuthSettings) (interf
|
||||
"internalSignUpEnabled": int.Signup.Enabled,
|
||||
|
||||
"externalEnabled": ext.Enabled,
|
||||
"externalProviders": ext.Providers,
|
||||
"externalProviders": ext.Providers.Valid(ctrl.settings),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@ -112,8 +112,8 @@ type (
|
||||
Label string `json:"label"`
|
||||
Key string `json:"-"`
|
||||
Secret string `json:"-"`
|
||||
RedirectUrl string `json:",omitempty" kv:"redirect"`
|
||||
IssuerUrl string `json:",omitempty" kv:"issuer"`
|
||||
RedirectUrl string `json:"-" kv:"redirect"`
|
||||
IssuerUrl string `json:"-" kv:"issuer"`
|
||||
Weight int `json:"-"`
|
||||
}
|
||||
)
|
||||
@ -159,12 +159,20 @@ func (set *ExternalAuthProviderSet) DecodeKV(kv settings.KV, prefix string) (err
|
||||
|
||||
if p.Label == "" {
|
||||
switch p.Handle {
|
||||
case "github":
|
||||
p.Label = "GitHub"
|
||||
case "linkedin":
|
||||
p.Label = "LinkedIn"
|
||||
case "corteza-iam", "corteza", "corteza-one":
|
||||
p.Label = "Corteza One"
|
||||
case "crust-iam", "crust", "crust-unify":
|
||||
p.Label = "Crust Unify"
|
||||
default:
|
||||
strings.Title(p.Handle)
|
||||
if strings.HasPrefix(p.Handle, oidcPrefix) {
|
||||
p.Label = strings.Title(p.Handle[len(oidcPrefix):])
|
||||
} else {
|
||||
p.Label = strings.Title(p.Handle)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -182,9 +190,34 @@ func (set ExternalAuthProviderSet) FindByHandle(handle string) *ExternalAuthProv
|
||||
return nil
|
||||
}
|
||||
|
||||
func (set ExternalAuthProviderSet) Len() int { return len(set) }
|
||||
func (set ExternalAuthProviderSet) Swap(i, j int) { set[i], set[j] = set[j], set[i] }
|
||||
func (set ExternalAuthProviderSet) Less(i, j int) bool { return set[i].Weight < set[j].Weight }
|
||||
func (set ExternalAuthProviderSet) Len() int { return len(set) }
|
||||
func (set ExternalAuthProviderSet) Swap(i, j int) { set[i], set[j] = set[j], set[i] }
|
||||
func (set ExternalAuthProviderSet) Less(i, j int) bool {
|
||||
if set[i].Weight != set[j].Weight {
|
||||
// Sort by weight
|
||||
return set[i].Weight < set[j].Weight
|
||||
}
|
||||
|
||||
if set[i].Label+set[j].Label != "" {
|
||||
// If at least one of the
|
||||
return set[i].Label < set[j].Label
|
||||
}
|
||||
|
||||
return set[i].Handle < set[j].Handle
|
||||
}
|
||||
|
||||
// Returns enabled providers, sorted with their redirect-URLs set...
|
||||
func (set ExternalAuthProviderSet) Valid(s *Settings) (out ExternalAuthProviderSet) {
|
||||
for _, eap := range set {
|
||||
if !eap.Enabled {
|
||||
continue
|
||||
}
|
||||
|
||||
out = append(out, eap)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
var _ settings.KVDecoder = &ExternalAuthProviderSet{}
|
||||
|
||||
|
||||
@ -50,22 +50,22 @@ func Test_settingsExtAuthProvidersDecode(t *testing.T) {
|
||||
|
||||
require.Equal(t,
|
||||
aux.Providers.FindByHandle("openid-connect.bar"),
|
||||
&ExternalAuthProvider{Enabled: true, Key: "K3Y", Handle: "openid-connect.bar"})
|
||||
&ExternalAuthProvider{Enabled: true, Key: "K3Y", Handle: "openid-connect.bar", Label: "Bar"})
|
||||
|
||||
require.Equal(t,
|
||||
aux.Providers.FindByHandle("google"),
|
||||
&ExternalAuthProvider{Enabled: true, Key: "g00gl3", Handle: "google"})
|
||||
&ExternalAuthProvider{Enabled: true, Key: "g00gl3", Handle: "google", Label: "Google"})
|
||||
|
||||
require.Equal(t,
|
||||
aux.Providers.FindByHandle("linkedin"),
|
||||
&ExternalAuthProvider{Handle: "linkedin"})
|
||||
&ExternalAuthProvider{Handle: "linkedin", Label: "LinkedIn"})
|
||||
|
||||
require.Equal(t,
|
||||
aux.Providers.FindByHandle("github"),
|
||||
&ExternalAuthProvider{Handle: "github"})
|
||||
&ExternalAuthProvider{Handle: "github", Label: "GitHub"})
|
||||
|
||||
require.Equal(t,
|
||||
aux.Providers.FindByHandle("facebook"),
|
||||
&ExternalAuthProvider{Handle: "facebook"})
|
||||
&ExternalAuthProvider{Handle: "facebook", Label: "Facebook"})
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user