sysmgr-nest/src/common/permissions.ts
liuyun 7340658305 feat: enforce RBAC, audit/login logging, and seed script
收口 Phase 0 三处「声明未生效」:
- 三级鉴权落地:权限集存 Redis(key 前缀隔离多项目),@RequirePermissions 挂到全部受控接口,super_admin 角色绕过权限码与 data_scope
- 审计/登录日志自动落库:@AuditLog 装饰器 + 拦截器异步写入(写操作+登录登出),登录成功/失败均记 login_log(脱敏)
- seed 脚本:一键初始化租户 touyun/用户 touyun/超管 super_admin/全量资源树(48 资源全量授权)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-10 23:19:41 +08:00

58 lines
1.3 KiB
TypeScript
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.

/**
* 权限码单一事实源(细粒度 domain:action)。
* 控制器 @RequirePermissions 与 seed 资源树共用,避免漂移。
*/
export const Permissions = {
tenant: {
list: 'tenant:list',
create: 'tenant:create',
update: 'tenant:update',
delete: 'tenant:delete',
},
user: {
list: 'user:list',
create: 'user:create',
update: 'user:update',
delete: 'user:delete',
resetPwd: 'user:reset-pwd',
},
role: {
list: 'role:list',
create: 'role:create',
update: 'role:update',
delete: 'role:delete',
assignResource: 'role:assign-resource',
},
resource: {
list: 'resource:list',
create: 'resource:create',
update: 'resource:update',
delete: 'resource:delete',
},
org: {
list: 'org:list',
create: 'org:create',
update: 'org:update',
delete: 'org:delete',
},
dict: {
list: 'dict:list',
create: 'dict:create',
update: 'dict:update',
delete: 'dict:delete',
},
config: {
list: 'config:list',
create: 'config:create',
update: 'config:update',
delete: 'config:delete',
},
audit: { list: 'audit:list' },
loginLog: { list: 'login-log:list' },
} as const;
/** 全部权限码扁平列表(seed 授权与资源生成用)。 */
export const ALL_PERMISSIONS: string[] = Object.values(Permissions).flatMap((m) =>
Object.values(m),
);