diff --git a/internal/biz/account.go b/internal/biz/account.go index 49641446..d07b4113 100644 --- a/internal/biz/account.go +++ b/internal/biz/account.go @@ -6,6 +6,7 @@ import ( "github.com/golang-jwt/jwt" "github.com/mitchellh/mapstructure" "golang.org/x/crypto/bcrypt" + "infini.sh/console/internal/biz/enum" "infini.sh/console/internal/dto" "infini.sh/console/model/rbac" "infini.sh/framework/core/event" @@ -98,10 +99,17 @@ func authorize(user Account) (m map[string]interface{}, err error) { return } var roles, privilege []string - for _, v := range user.Roles { - roles = append(roles, v.Name) - r, _ := GetRole(v.Id) - privilege = append(privilege, r.Platform...) + if user.Username == "admin" { + roles = append(roles, "admin") + privilege = append(privilege, enum.AdminPrivilege...) + } else { + for _, v := range user.Roles { + roles = append(roles, v.Name) + + r, _ := GetRole(v.Id) + + privilege = append(privilege, r.Platform...) + } } m = util.MapStr{ diff --git a/internal/biz/enum/const.go b/internal/biz/enum/const.go index 1ca72c11..ea0ea393 100644 --- a/internal/biz/enum/const.go +++ b/internal/biz/enum/const.go @@ -13,7 +13,9 @@ var RuleAll = []string{"rule::read", "rule::write"} var InstanceRead = []string{"instance::read"} var InstanceAll = []string{"instance::read", "instance::write"} - +var AdminPrivilege = []string{ + "role::read", "role::all", "user::read", "user::all", +} var Admin []string var BuildRoles = make(map[string]map[string]interface{}, 0) diff --git a/internal/biz/permission.go b/internal/biz/permission.go index 6128d4ad..62880ee9 100644 --- a/internal/biz/permission.go +++ b/internal/biz/permission.go @@ -7,7 +7,8 @@ var RolePermission = make(map[string][]string) var EsRolePermission = make(map[string]EsRole) type EsRole struct { - Cluster []struct { + Platform []string `json:"platform"` + Cluster []struct { Id string `json:"id"` Name string `json:"name"` } `json:"cluster,omitempty"`