87 lines
2.7 KiB
Go
87 lines
2.7 KiB
Go
package authx
|
||
|
||
// 权限统一用中文命名。英文旧码仍可通过 NormalizePerm 兼容。
|
||
const (
|
||
Perm读取模块 = "读取模块"
|
||
Perm写入模块 = "写入模块"
|
||
Perm发布模块 = "发布模块"
|
||
Perm新增数据 = "新增数据"
|
||
Perm查询数据 = "查询数据"
|
||
Perm更新数据 = "更新数据"
|
||
Perm删除数据 = "删除数据"
|
||
Perm导出数据 = "导出数据"
|
||
Perm导入数据 = "导入数据"
|
||
Perm查看审计 = "查看审计"
|
||
Perm上传文件 = "上传文件"
|
||
Perm下载文件 = "下载文件"
|
||
Perm管理智能体 = "管理智能体"
|
||
Perm邀请成员 = "邀请成员"
|
||
Perm管理组织 = "管理组织"
|
||
Perm数据同步 = "数据同步"
|
||
Perm管理租户 = "管理租户" // 平台超级管理员:跨公司
|
||
)
|
||
|
||
// permAlias:英文旧码 → 中文规范名;中文自身映射到自身。
|
||
var permAlias = map[string]string{
|
||
"app.read": Perm读取模块,
|
||
"app.write": Perm写入模块,
|
||
"app.admin": Perm发布模块,
|
||
"row.create": Perm新增数据,
|
||
"row.read": Perm查询数据,
|
||
"row.update": Perm更新数据,
|
||
"row.delete": Perm删除数据,
|
||
"row.export": Perm导出数据,
|
||
"row.import": Perm导入数据,
|
||
"audit.read": Perm查看审计,
|
||
"storage.write": Perm上传文件,
|
||
"storage.read": Perm下载文件,
|
||
"agent.admin": Perm管理智能体,
|
||
"tenant.invite": Perm邀请成员,
|
||
"org.admin": Perm管理组织,
|
||
"sync.admin": Perm数据同步,
|
||
"tenant.admin": Perm管理租户,
|
||
Perm读取模块: Perm读取模块,
|
||
Perm写入模块: Perm写入模块,
|
||
Perm发布模块: Perm发布模块,
|
||
Perm新增数据: Perm新增数据,
|
||
Perm查询数据: Perm查询数据,
|
||
Perm更新数据: Perm更新数据,
|
||
Perm删除数据: Perm删除数据,
|
||
Perm导出数据: Perm导出数据,
|
||
Perm导入数据: Perm导入数据,
|
||
Perm查看审计: Perm查看审计,
|
||
Perm上传文件: Perm上传文件,
|
||
Perm下载文件: Perm下载文件,
|
||
Perm管理智能体: Perm管理智能体,
|
||
Perm邀请成员: Perm邀请成员,
|
||
Perm管理组织: Perm管理组织,
|
||
Perm数据同步: Perm数据同步,
|
||
Perm管理租户: Perm管理租户,
|
||
}
|
||
|
||
// NormalizePerm 将权限统一为中文规范名(未知则原样返回)。
|
||
func NormalizePerm(p string) string {
|
||
if c, ok := permAlias[p]; ok {
|
||
return c
|
||
}
|
||
return p
|
||
}
|
||
|
||
// NormalizePerms 去重并转为中文规范名。
|
||
func NormalizePerms(perms []string) []string {
|
||
seen := map[string]struct{}{}
|
||
out := make([]string, 0, len(perms))
|
||
for _, p := range perms {
|
||
c := NormalizePerm(p)
|
||
if c == "" {
|
||
continue
|
||
}
|
||
if _, ok := seen[c]; ok {
|
||
continue
|
||
}
|
||
seen[c] = struct{}{}
|
||
out = append(out, c)
|
||
}
|
||
return out
|
||
}
|