Files
aurak/server/src/auth/permission/role.entity.ts
T
Developer ba33d517c1 feat: 分层 RBAC 权限管理系统
后端:
- 新增 Role / RolePermission 实体(自动 seed 系统角色)
- PermissionService——通过 isAdmin / TenantMember 链路解析用户权限
- @Permission() 装饰器 + PermissionsGuard 守卫
- /api/permissions 和 /api/roles REST API
- UserController 内联 role 检查迁移到 @Permission()
- PermissionModule 全局注册

前端:
- usePermissions hook——获取当前用户权限集
- PermissionGate 组件级门控
- PermissionSettingsView——角色列表+权限矩阵编辑页面
- SettingsView 新增「权限管理」Tab(仅 admin 可见)
- 权限预览(26 项,7 分类)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 23:25:22 +08:00

50 lines
1.2 KiB
TypeScript

import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
} from 'typeorm';
import { UserRole } from '../../user/user-role.enum';
/**
* 角色表
* is_system = true: 系统内置角色(SUPER_ADMIN/TENANT_ADMIN/USER),不可删除
* tenant_id = null: 系统级角色(所有租户可见)
* tenant_id != null: 租户自定义角色
*/
@Entity('roles')
export class Role {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ unique: true, length: 50 })
name: string;
@Column({ type: 'text', nullable: true })
description: string;
/** 是否为系统内置角色 */
@Column({ name: 'is_system', default: false })
isSystem: boolean;
/** 关联的内置角色 enum(仅 is_system=true 时有值) */
@Column({
name: 'base_role',
type: 'simple-enum',
enum: UserRole,
nullable: true,
})
baseRole: UserRole | null;
/** 所属租户:null=系统级,非 null=租户自定义 */
@Column({ name: 'tenant_id', nullable: true, type: 'text' })
tenantId: string | null;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
}