mirror of https://github.com/veypi/OneAuth.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.1 KiB
Go
66 lines
2.1 KiB
Go
package model
|
|
|
|
// Policy 策略定义
|
|
type Policy struct {
|
|
Base
|
|
OrgID string `json:"org_id" gorm:"index"` // 空表示全局策略
|
|
Code string `json:"code" gorm:"uniqueIndex;size:50;not null"`
|
|
Name string `json:"name" gorm:"size:50;not null"`
|
|
Description string `json:"description" gorm:"size:200"`
|
|
Resource string `json:"resource" gorm:"size:50;not null"` // 资源类型
|
|
Action string `json:"action" gorm:"size:20;not null"` // read/create/update/delete/*
|
|
Condition string `json:"condition" gorm:"type:text"` // CEL表达式
|
|
Effect string `json:"effect" gorm:"size:10;default:allow"`
|
|
Priority int `json:"priority" gorm:"default:0"`
|
|
IsSystem bool `json:"is_system" gorm:"default:false"`
|
|
}
|
|
|
|
func (Policy) TableName() string {
|
|
return "policies"
|
|
}
|
|
|
|
// Role 角色
|
|
type Role struct {
|
|
Base
|
|
OrgID string `json:"org_id" gorm:"index;not null"`
|
|
Code string `json:"code" gorm:"size:50;not null"`
|
|
Name string `json:"name" gorm:"size:50;not null"`
|
|
Description string `json:"description" gorm:"size:200"`
|
|
PolicyIDs string `json:"policy_ids" gorm:"type:text"` // 逗号分隔
|
|
IsDefault bool `json:"is_default" gorm:"default:false"`
|
|
IsSystem bool `json:"is_system" gorm:"default:false"`
|
|
SortOrder int `json:"sort_order" gorm:"default:0"`
|
|
}
|
|
|
|
func (Role) TableName() string {
|
|
return "roles"
|
|
}
|
|
|
|
// Effect 常量
|
|
const (
|
|
EffectAllow = "allow"
|
|
EffectDeny = "deny"
|
|
)
|
|
|
|
// System Policies 系统内置策略编码
|
|
const (
|
|
SysPolicyUserReadOwn = "sys:user:read:own"
|
|
SysPolicyUserUpdateOwn = "sys:user:update:own"
|
|
SysPolicyUserDeleteOwn = "sys:user:delete:own"
|
|
SysPolicyOrgAdmin = "sys:org:admin"
|
|
SysPolicyOrgRead = "sys:org:read"
|
|
SysPolicyMemberRead = "sys:member:read"
|
|
SysPolicyMemberManage = "sys:member:manage"
|
|
SysPolicyRoleRead = "sys:role:read"
|
|
SysPolicyRoleManage = "sys:role:manage"
|
|
SysPolicyPolicyRead = "sys:policy:read"
|
|
SysPolicyPolicyManage = "sys:policy:manage"
|
|
)
|
|
|
|
// System Roles 系统内置角色编码
|
|
const (
|
|
SysRoleOrgOwner = "owner"
|
|
SysRoleOrgAdmin = "admin"
|
|
SysRoleOrgMember = "member"
|
|
)
|