Files
ai_site/platform/internal/authx/roles.go
2026-07-31 10:19:22 +08:00

94 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package authx
// 平台账号角色JWT role——统一中文命名。
const (
Role超级管理员 = "超级管理员" // 平台级:可管理所有公司
Role管理员 = "管理员" // 公司顶级
Role编辑 = "编辑"
Role只读 = "只读"
Role待加入 = "待加入"
Role智能体 = "智能体"
)
// RoleAgent 智能体 JWT 角色(与 Role智能体 相同)。
const RoleAgent = Role智能体
// 智能体租户角色编码roles 表 code——统一中文。
const (
AgentRole生成发布 = "生成发布"
AgentRole只读 = "只读"
AgentRole读写 = "读写"
AgentRole运维 = "运维"
)
// NormalizeRole 将平台角色统一为中文(兼容英文旧码)。
func NormalizeRole(role string) string {
switch role {
case "platform_admin", "super_admin", Role超级管理员:
return Role超级管理员
case "owner", Role管理员:
return Role管理员
case "editor", Role编辑:
return Role编辑
case "viewer", Role只读:
return Role只读
case "pending", Role待加入:
return Role待加入
case "agent", Role智能体:
return Role智能体
default:
return role
}
}
// NormalizeAgentRoleCode 智能体角色编码 → 中文(兼容英文旧码)。
func NormalizeAgentRoleCode(code string) string {
switch code {
case "publisher", AgentRole生成发布:
return AgentRole生成发布
case "viewer", AgentRole只读:
return AgentRole只读
case "editor", AgentRole读写:
return AgentRole读写
case "operator", AgentRole运维:
return AgentRole运维
default:
return code
}
}
// IsPlatformAdmin 是否平台超级管理员(可跨公司)。
func IsPlatformAdmin(role string) bool {
return NormalizeRole(role) == Role超级管理员
}
// IsOwner 是否公司顶级管理员(不含超级管理员)。
func IsOwner(role string) bool {
return NormalizeRole(role) == Role管理员
}
// IsCompanyAdmin 公司内顶级管理员(超级管理员不介入公司内部)。
func IsCompanyAdmin(role string) bool {
return NormalizeRole(role) == Role管理员
}
// IsAgent 是否智能体账号。
func IsAgent(role string) bool {
return NormalizeRole(role) == Role智能体
}
// RoleLabel 平台角色 → 中文显示(已是中文则原样)。
func RoleLabel(role string) string {
return NormalizeRole(role)
}
// ValidPlatformRole 是否可赋予人类成员的角色(不含待加入/智能体/超级管理员)。
func ValidPlatformRole(role string) bool {
switch NormalizeRole(role) {
case Role管理员, Role编辑, Role只读:
return true
default:
return false
}
}