mirror of
https://github.com/unmojang/drasl.git
synced 2025-09-08 14:45:23 -04:00
Deterministic OIDC provider display order
Go map iteration order is (intentionally) random
This commit is contained in:
parent
cec6d6828c
commit
9901aa8776
11
front.go
11
front.go
@ -332,7 +332,8 @@ func FrontRoot(app *App) func(c echo.Context) error {
|
|||||||
Secure: true,
|
Secure: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
for name, provider := range app.OIDCProvidersByName {
|
for _, name := range app.OIDCProviderNames {
|
||||||
|
provider := app.OIDCProvidersByName[name]
|
||||||
authURL, err := makeOIDCAuthURL(&c, provider, stateBase64)
|
authURL, err := makeOIDCAuthURL(&c, provider, stateBase64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -438,7 +439,8 @@ func FrontRegistration(app *App) func(c echo.Context) error {
|
|||||||
Secure: true,
|
Secure: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
for name, provider := range app.OIDCProvidersByName {
|
for _, name := range app.OIDCProviderNames {
|
||||||
|
provider := app.OIDCProvidersByName[name]
|
||||||
authURL, err := makeOIDCAuthURL(&c, provider, stateBase64)
|
authURL, err := makeOIDCAuthURL(&c, provider, stateBase64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -624,7 +626,7 @@ func (app *App) oidcLink(c echo.Context, oidcProvider *OIDCProvider, tokens *oid
|
|||||||
return c.Redirect(http.StatusSeeOther, returnURL)
|
return c.Redirect(http.StatusSeeOther, returnURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) oidcSignIn(c echo.Context, oidcProvider *OIDCProvider, tokens *oidc.Tokens[*oidc.IDTokenClaims], state oidcState) error {
|
func (app *App) oidcSignIn(c echo.Context, _ *OIDCProvider, tokens *oidc.Tokens[*oidc.IDTokenClaims], state oidcState) error {
|
||||||
failureURL := state.ReturnURL
|
failureURL := state.ReturnURL
|
||||||
completeRegistrationURL, err := url.JoinPath(app.FrontEndURL, "web/complete-registration")
|
completeRegistrationURL, err := url.JoinPath(app.FrontEndURL, "web/complete-registration")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -994,7 +996,8 @@ func FrontUser(app *App) func(c echo.Context) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, provider := range app.OIDCProvidersByName {
|
for _, name := range app.OIDCProviderNames {
|
||||||
|
provider := app.OIDCProvidersByName[name]
|
||||||
if !linkedOIDCProviderNames.Contains(name) {
|
if !linkedOIDCProviderNames.Contains(name) {
|
||||||
authURL, err := makeOIDCAuthURL(&c, provider, stateBase64)
|
authURL, err := makeOIDCAuthURL(&c, provider, stateBase64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
4
main.go
4
main.go
@ -67,6 +67,7 @@ type App struct {
|
|||||||
AEAD cipher.AEAD
|
AEAD cipher.AEAD
|
||||||
SkinMutex *sync.Mutex
|
SkinMutex *sync.Mutex
|
||||||
VerificationSkinTemplate *image.NRGBA
|
VerificationSkinTemplate *image.NRGBA
|
||||||
|
OIDCProviderNames []string
|
||||||
OIDCProvidersByName map[string]*OIDCProvider
|
OIDCProvidersByName map[string]*OIDCProvider
|
||||||
OIDCProvidersByIssuer map[string]*OIDCProvider
|
OIDCProvidersByIssuer map[string]*OIDCProvider
|
||||||
}
|
}
|
||||||
@ -500,6 +501,7 @@ func setup(config *Config) *App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OIDC providers
|
// OIDC providers
|
||||||
|
oidcProviderNames := make([]string, 0, len(config.RegistrationOIDC))
|
||||||
oidcProvidersByName := map[string]*OIDCProvider{}
|
oidcProvidersByName := map[string]*OIDCProvider{}
|
||||||
oidcProvidersByIssuer := map[string]*OIDCProvider{}
|
oidcProvidersByIssuer := map[string]*OIDCProvider{}
|
||||||
scopes := []string{"openid", "email"}
|
scopes := []string{"openid", "email"}
|
||||||
@ -528,6 +530,7 @@ func setup(config *Config) *App {
|
|||||||
Config: oidcConfig,
|
Config: oidcConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oidcProviderNames = append(oidcProviderNames, oidcConfig.Name)
|
||||||
oidcProvidersByName[oidcConfig.Name] = &oidcProvider
|
oidcProvidersByName[oidcConfig.Name] = &oidcProvider
|
||||||
oidcProvidersByIssuer[oidcConfig.Issuer] = &oidcProvider
|
oidcProvidersByIssuer[oidcConfig.Issuer] = &oidcProvider
|
||||||
}
|
}
|
||||||
@ -555,6 +558,7 @@ func setup(config *Config) *App {
|
|||||||
AuthlibInjectorURL: Unwrap(url.JoinPath(config.BaseURL, "authlib-injector")),
|
AuthlibInjectorURL: Unwrap(url.JoinPath(config.BaseURL, "authlib-injector")),
|
||||||
APIURL: Unwrap(url.JoinPath(config.BaseURL, DRASL_API_PREFIX)),
|
APIURL: Unwrap(url.JoinPath(config.BaseURL, DRASL_API_PREFIX)),
|
||||||
VerificationSkinTemplate: verificationSkinTemplate,
|
VerificationSkinTemplate: verificationSkinTemplate,
|
||||||
|
OIDCProviderNames: oidcProviderNames,
|
||||||
OIDCProvidersByName: oidcProvidersByName,
|
OIDCProvidersByName: oidcProvidersByName,
|
||||||
OIDCProvidersByIssuer: oidcProvidersByIssuer,
|
OIDCProvidersByIssuer: oidcProvidersByIssuer,
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user