取消userCred.IsSystemAdmin(),在使用policy的应用中,通过userCred.IsAdminAllow判断是否是管理员且具备相应的权限。获取token时,需要传入policy.FilterPolicyCredential,将普通userCred转换成支持rbac的userCred
2. 在应用启动时候,必须设置 SetServiceType,否则退出
This commit is contained in:
Qiu Jian
2018-11-30 23:00:11 +08:00
parent bfed7c25c3
commit bc02b3b433
65 changed files with 516 additions and 232 deletions
+4 -2
View File
@@ -8,6 +8,8 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/cloudcommon/consts"
"yunion.io/x/onecloud/pkg/cloudcommon/policy"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/pkg/util/reflectutils"
"yunion.io/x/sqlchemy"
@@ -191,7 +193,7 @@ func (self *SJointResourceBase) AllowGetJointDetails(ctx context.Context, userCr
master := item.Master()
switch master.(type) {
case IVirtualModel:
return master.(IVirtualModel).IsOwner(userCred)
return master.(IVirtualModel).IsOwner(userCred) || userCred.IsAdminAllow(consts.GetServiceType(), master.KeywordPlural(), policy.PolicyActionGet)
default: // case item implemented customized AllowGetDetails, eg hostjoints
return item.AllowGetDetails(ctx, userCred, query)
}
@@ -201,7 +203,7 @@ func (self *SJointResourceBase) AllowUpdateJointItem(ctx context.Context, userCr
master := item.Master()
switch master.(type) {
case IVirtualModel:
return master.(IVirtualModel).IsOwner(userCred)
return master.(IVirtualModel).IsOwner(userCred) || userCred.IsAdminAllow(consts.GetServiceType(), master.KeywordPlural(), policy.PolicyActionUpdate)
default: // case item implemented customized AllowGetDetails, eg hostjoints
return item.AllowUpdateItem(ctx, userCred)
}