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>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import { Controller, Get, Request, UseGuards } from '@nestjs/common';
|
||||
import { PermissionService } from './permission.service';
|
||||
import { CombinedAuthGuard } from '../combined-auth.guard';
|
||||
|
||||
@Controller('permissions')
|
||||
@UseGuards(CombinedAuthGuard)
|
||||
export class PermissionController {
|
||||
constructor(private readonly permissionService: PermissionService) {}
|
||||
|
||||
/** 获取所有可用权限(含分类) */
|
||||
@Get()
|
||||
getAll() {
|
||||
return this.permissionService.getPermissionsByCategory();
|
||||
}
|
||||
|
||||
/** 获取所有权限的扁平元数据列表 */
|
||||
@Get('meta')
|
||||
getMeta() {
|
||||
return this.permissionService.getAllPermissionMeta();
|
||||
}
|
||||
|
||||
/** 获取当前用户在活动租户下的权限集 */
|
||||
@Get('mine')
|
||||
async getMine(@Request() req) {
|
||||
const userId = req.user.id;
|
||||
const tenantId = req.tenantId || req.user.tenantId;
|
||||
const perms = await this.permissionService.getUserPermissions(userId, tenantId);
|
||||
return { permissions: [...perms] };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user