Superuser toggle for team members

Make superuser toggleable for team members. Add and "admin" role to team members if superuser is disabled.
This commit is contained in:
Jan Mussler 2017-10-12 15:01:54 +02:00 committed by GitHub
parent 702d901bd9
commit cec695d48e
4 changed files with 16 additions and 1 deletions

1
.gitignore vendored
View File

@ -26,5 +26,6 @@ _testmain.go
/.glide/ /.glide/
/build/ /build/
/docker/build/ /docker/build/
.idea
scm-source.json scm-source.json

View File

@ -27,6 +27,9 @@ data:
resource_check_timeout: 10m resource_check_timeout: 10m
resync_period: 5m resync_period: 5m
super_username: postgres super_username: postgres
enable_teams_api: "false"
enable_team_superuser: "false"
team_admin_role: "admin"
teams_api_url: http://fake-teams-api.default.svc.cluster.local teams_api_url: http://fake-teams-api.default.svc.cluster.local
workers: "4" workers: "4"
enable_load_balancer: "true" enable_load_balancer: "true"

View File

@ -644,8 +644,17 @@ func (c *Cluster) initHumanUsers() error {
return fmt.Errorf("could not get list of team members: %v", err) return fmt.Errorf("could not get list of team members: %v", err)
} }
for _, username := range teamMembers { for _, username := range teamMembers {
flags := []string{constants.RoleFlagLogin, constants.RoleFlagSuperuser} flags := []string{constants.RoleFlagLogin}
memberOf := []string{c.OpConfig.PamRoleName} memberOf := []string{c.OpConfig.PamRoleName}
if c.OpConfig.EnableTeamSuperuser {
flags = append(flags, constants.RoleFlagSuperuser)
} else {
if c.OpConfig.TeamAdminRole != "" {
memberOf = append(memberOf, c.OpConfig.TeamAdminRole)
}
}
c.pgUsers[username] = spec.PgUser{Name: username, Flags: flags, MemberOf: memberOf} c.pgUsers[username] = spec.PgUser{Name: username, Flags: flags, MemberOf: memberOf}
} }

View File

@ -58,6 +58,8 @@ type Config struct {
DebugLogging bool `name:"debug_logging" default:"true"` DebugLogging bool `name:"debug_logging" default:"true"`
EnableDBAccess bool `name:"enable_database_access" default:"true"` EnableDBAccess bool `name:"enable_database_access" default:"true"`
EnableTeamsAPI bool `name:"enable_teams_api" default:"true"` EnableTeamsAPI bool `name:"enable_teams_api" default:"true"`
EnableTeamSuperuser bool `name:"enable_team_superuser" default:"false"`
TeamAdminRole string `name:"team_admin_role" default:"admin"`
EnableLoadBalancer bool `name:"enable_load_balancer" default:"true"` EnableLoadBalancer bool `name:"enable_load_balancer" default:"true"`
MasterDNSNameFormat stringTemplate `name:"master_dns_name_format" default:"{cluster}.{team}.{hostedzone}"` MasterDNSNameFormat stringTemplate `name:"master_dns_name_format" default:"{cluster}.{team}.{hostedzone}"`
ReplicaDNSNameFormat stringTemplate `name:"replica_dns_name_format" default:"{cluster}-repl.{team}.{hostedzone}"` ReplicaDNSNameFormat stringTemplate `name:"replica_dns_name_format" default:"{cluster}-repl.{team}.{hostedzone}"`