Skip to content

Commit 0e69b22

Browse files
committed
Allow default role to be configured for Keystone users
The default role is assigned to authenticated users for whom no role mapping applies.
1 parent bb913f4 commit 0e69b22

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

pkg/login/auth.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ func AuthenticateUser(query *LoginUserQuery) error {
4343
if setting.KeystoneEnabled {
4444
auther := NewKeystoneAuthenticator(setting.KeystoneURL,
4545
setting.KeystoneDefaultDomain,
46+
setting.KeystoneDefaultRole,
4647
setting.KeystoneGlobalAdminRoles,
4748
setting.KeystoneAdminRoles,
4849
setting.KeystoneEditorRoles,

pkg/login/keystone.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,23 @@ import (
1111
type keystoneAuther struct {
1212
server string
1313
domainname string
14+
defaultrole string
1415
roles map[m.RoleType][]string
1516
admin_roles []string
1617

1718
token string
1819
project_list map[string][]string
1920
}
2021

21-
func NewKeystoneAuthenticator(server, domainname string, global_admin_roles, admin_roles, editor_roles,
22+
func NewKeystoneAuthenticator(server, domainname, default_role string, global_admin_roles, admin_roles, editor_roles,
2223
read_editor_roles, viewer_roles []string) *keystoneAuther {
2324
roles := map[m.RoleType][]string{
2425
m.ROLE_ADMIN: admin_roles,
2526
m.ROLE_EDITOR: editor_roles,
2627
m.ROLE_READ_ONLY_EDITOR: read_editor_roles,
2728
m.ROLE_VIEWER: viewer_roles,
2829
}
29-
return &keystoneAuther{server: server, domainname: domainname, roles: roles, admin_roles: global_admin_roles}
30+
return &keystoneAuther{server: server, domainname: domainname, defaultrole: default_role, roles: roles, admin_roles: global_admin_roles}
3031
}
3132

3233
func (a *keystoneAuther) login(query *LoginUserQuery) error {
@@ -315,5 +316,5 @@ func (a *keystoneAuther) getRole(user_roles []string) m.RoleType {
315316
}
316317
}
317318
}
318-
return ""
319+
return m.RoleType(a.defaultrole)
319320
}

pkg/setting/setting.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,14 @@ var (
130130
KeystoneEnabled bool
131131
KeystoneURL string
132132
KeystoneDefaultDomain string
133+
KeystoneDefaultRole string
133134
KeystoneViewerRoles []string
134135
KeystoneReadEditorRoles []string
135136
KeystoneEditorRoles []string
136137
KeystoneAdminRoles []string
137138
KeystoneGlobalAdminRoles []string
138-
KeystoneVerifySSLCert bool
139-
KeystoneRootCAPEMFile []string
139+
KeystoneVerifySSLCert bool
140+
KeystoneRootCAPEMFile string
140141

141142
// SMTP email settings
142143
Smtp SmtpSettings
@@ -483,6 +484,7 @@ func NewConfigContext(args *CommandLineArgs) error {
483484
KeystoneEnabled = keystone.Key("enabled").MustBool(false)
484485
KeystoneURL = keystone.Key("auth_url").String()
485486
KeystoneDefaultDomain = keystone.Key("default_domain").String()
487+
KeystoneDefaultRole = keystone.Key("default_role").String()
486488
KeystoneViewerRoles = strings.Split(keystone.Key("viewer_roles").String(), ",")
487489
KeystoneReadEditorRoles = strings.Split(keystone.Key("read_editor_roles").String(), ",")
488490
KeystoneEditorRoles = strings.Split(keystone.Key("editor_roles").String(), ",")

0 commit comments

Comments
 (0)