mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-05 00:15:26 -04:00
Extend the options with combination with login and select_account
This commit is contained in:
@@ -104,9 +104,14 @@ func (p *PKCEAuthorizationFlow) RequestAuthInfo(ctx context.Context) (AuthFlowIn
|
||||
oauth2.SetAuthURLParam("audience", p.providerConfig.Audience),
|
||||
}
|
||||
if !p.providerConfig.DisablePromptLogin {
|
||||
if p.providerConfig.LoginFlag.HasPromptLogin() {
|
||||
hasPromptLogin := p.providerConfig.LoginFlag.HasPromptLogin()
|
||||
hasSelectAccount := p.providerConfig.LoginFlag.HasSelectAccount()
|
||||
|
||||
if hasPromptLogin && hasSelectAccount {
|
||||
params = append(params, oauth2.SetAuthURLParam("prompt", "login select_account"))
|
||||
} else if hasPromptLogin {
|
||||
params = append(params, oauth2.SetAuthURLParam("prompt", "login"))
|
||||
} else if p.providerConfig.LoginFlag.HasSelectAccount() {
|
||||
} else if hasSelectAccount {
|
||||
params = append(params, oauth2.SetAuthURLParam("prompt", "select_account"))
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,10 @@ import (
|
||||
|
||||
func TestPromptLogin(t *testing.T) {
|
||||
const (
|
||||
promptLogin = "prompt=login"
|
||||
maxAge0 = "max_age=0"
|
||||
promptLogin = "prompt=login"
|
||||
promptSelectAccount = "prompt=select_account"
|
||||
promptLoginSelectAccount = "prompt=login+select_account"
|
||||
maxAge0 = "max_age=0"
|
||||
)
|
||||
|
||||
tt := []struct {
|
||||
@@ -35,6 +37,16 @@ func TestPromptLogin(t *testing.T) {
|
||||
loginFlag: mgm.LoginFlagMaxAge0,
|
||||
expect: maxAge0,
|
||||
},
|
||||
{
|
||||
name: "Prompt select account",
|
||||
loginFlag: mgm.LoginFlagSelectAccount,
|
||||
expect: promptSelectAccount,
|
||||
},
|
||||
{
|
||||
name: "Prompt login and select account",
|
||||
loginFlag: mgm.LoginFlagLoginSelectAccount,
|
||||
expect: promptLoginSelectAccount,
|
||||
},
|
||||
{
|
||||
name: "Disable prompt login",
|
||||
loginFlag: mgm.LoginFlagPromptLogin,
|
||||
|
||||
@@ -10,7 +10,8 @@ package common
|
||||
// | 1 | LoginFlagMaxAge0 | max_age=0 |
|
||||
// | 2 | LoginFlagSelectAccount | prompt=select_account |
|
||||
// | 3 | LoginFlagSelectAccountMaxAge0 | prompt=select_account & max_age=0 |
|
||||
// | 4 | LoginFlagNone | (none) |
|
||||
// | 4 | LoginFlagLoginSelectAccount | prompt=login select_account |
|
||||
// | 5 | LoginFlagNone | (none) |
|
||||
//
|
||||
// # Behavior
|
||||
//
|
||||
@@ -26,7 +27,7 @@ package common
|
||||
//
|
||||
// | Use Case | Recommended Flag |
|
||||
// |--------------------------------|---------------------------|
|
||||
// | Default SSO behavior | LoginFlagNone (4) |
|
||||
// | Default SSO behavior | LoginFlagNone (5) |
|
||||
// | Multi-account environment | LoginFlagSelectAccount (2)|
|
||||
// | Security-sensitive operations | LoginFlagPromptLogin (0) |
|
||||
// | Multi-account + force reauth | LoginFlagSelectAccountMaxAge0 (3) |
|
||||
@@ -41,13 +42,15 @@ const (
|
||||
LoginFlagSelectAccount
|
||||
// LoginFlagSelectAccountMaxAge0 adds prompt=select_account and max_age=0
|
||||
LoginFlagSelectAccountMaxAge0
|
||||
// LoginFlagLoginSelectAccount adds prompt=login select_account to the authorization request
|
||||
LoginFlagLoginSelectAccount
|
||||
// LoginFlagNone disables all login flags
|
||||
LoginFlagNone
|
||||
)
|
||||
|
||||
// HasPromptLogin returns true if prompt=login should be added
|
||||
func (f LoginFlag) HasPromptLogin() bool {
|
||||
return f == LoginFlagPromptLogin
|
||||
return f == LoginFlagPromptLogin || f == LoginFlagLoginSelectAccount
|
||||
}
|
||||
|
||||
// HasMaxAge0 returns true if max_age=0 should be added
|
||||
@@ -57,5 +60,5 @@ func (f LoginFlag) HasMaxAge0() bool {
|
||||
|
||||
// HasSelectAccount returns true if prompt=select_account should be added
|
||||
func (f LoginFlag) HasSelectAccount() bool {
|
||||
return f == LoginFlagSelectAccount || f == LoginFlagSelectAccountMaxAge0
|
||||
return f == LoginFlagSelectAccount || f == LoginFlagSelectAccountMaxAge0 || f == LoginFlagLoginSelectAccount
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user