fix: (rbac) admin privilege

This commit is contained in:
xushuhui 2022-04-24 14:09:56 +08:00
parent eeb1953837
commit 0a3aed312c
3 changed files with 17 additions and 6 deletions

View File

@ -6,6 +6,7 @@ import (
"github.com/golang-jwt/jwt" "github.com/golang-jwt/jwt"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
"infini.sh/console/internal/biz/enum"
"infini.sh/console/internal/dto" "infini.sh/console/internal/dto"
"infini.sh/console/model/rbac" "infini.sh/console/model/rbac"
"infini.sh/framework/core/event" "infini.sh/framework/core/event"
@ -98,11 +99,18 @@ func authorize(user Account) (m map[string]interface{}, err error) {
return return
} }
var roles, privilege []string var roles, privilege []string
if user.Username == "admin" {
roles = append(roles, "admin")
privilege = append(privilege, enum.AdminPrivilege...)
} else {
for _, v := range user.Roles { for _, v := range user.Roles {
roles = append(roles, v.Name) roles = append(roles, v.Name)
r, _ := GetRole(v.Id) r, _ := GetRole(v.Id)
privilege = append(privilege, r.Platform...) privilege = append(privilege, r.Platform...)
} }
}
m = util.MapStr{ m = util.MapStr{
"access_token": tokenString, "access_token": tokenString,

View File

@ -13,7 +13,9 @@ var RuleAll = []string{"rule::read", "rule::write"}
var InstanceRead = []string{"instance::read"} var InstanceRead = []string{"instance::read"}
var InstanceAll = []string{"instance::read", "instance::write"} var InstanceAll = []string{"instance::read", "instance::write"}
var AdminPrivilege = []string{
"role::read", "role::all", "user::read", "user::all",
}
var Admin []string var Admin []string
var BuildRoles = make(map[string]map[string]interface{}, 0) var BuildRoles = make(map[string]map[string]interface{}, 0)

View File

@ -7,6 +7,7 @@ var RolePermission = make(map[string][]string)
var EsRolePermission = make(map[string]EsRole) var EsRolePermission = make(map[string]EsRole)
type EsRole struct { type EsRole struct {
Platform []string `json:"platform"`
Cluster []struct { Cluster []struct {
Id string `json:"id"` Id string `json:"id"`
Name string `json:"name"` Name string `json:"name"`