实现角色权限管理

This commit is contained in:
2025-05-08 22:59:03 +08:00
parent a2972de417
commit 448a7b48ba
5 changed files with 63 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import { UserModule } from 'src/user/user.module';
import { RoleModule } from 'src/role/role.module';
import { AdminRoleController } from './controller/admin-role.controller';
import { AdminPermissionController } from './controller/admin-permission.controller';
import { AdminRolePermissionController } from './controller/admin-role-permission.controller';
@Module({
imports: [
@@ -22,6 +23,7 @@ import { AdminPermissionController } from './controller/admin-permission.control
AdminUserController,
AdminRoleController,
AdminPermissionController,
AdminRolePermissionController,
],
providers: [
AdminUserService,

View File

@@ -0,0 +1,37 @@
import { Body, Controller, Delete, Get, Param, ParseUUIDPipe, Post } from "@nestjs/common";
import { PermissionService } from "src/role/services/permission.service";
import { RolePermissionService } from "src/role/services/role-permission.service";
import { SetRolePermissionsDto } from "../dto/admin-role-permission/set-role-permissions.dto";
@Controller('admin/roles/:roleId/permission')
export class AdminRolePermissionController {
constructor(
private readonly rolePermissionService: RolePermissionService,
private readonly permissionService: PermissionService,
) { }
@Get()
async getRolePermissions(
@Param('roleId', new ParseUUIDPipe({ version: '4' })) roleId: string,
) {
const permissionIds = await this.rolePermissionService.findPermissionIdsByRoleIds([roleId]);
return await this.permissionService.findPermissionByIds(permissionIds);
}
@Post()
async setRolePermissions(
@Param('roleId', new ParseUUIDPipe({ version: '4' })) roleId: string,
@Body() dto: SetRolePermissionsDto,
) {
return await this.rolePermissionService.addRolePermissions(roleId, dto.permissionIds);
}
@Delete()
async DeleteRolePermissionsDto(
@Param('roleId', new ParseUUIDPipe({ version: '4' })) roleId: string,
@Body() dto: SetRolePermissionsDto,
) {
return await this.rolePermissionService.deleteRolePermissions(roleId, dto.permissionIds);
}
}

View File

@@ -0,0 +1,8 @@
import { ArrayMinSize, IsArray, IsUUID } from "class-validator";
export class DeleteRolePermissionsDto {
@IsArray()
@ArrayMinSize(1)
@IsUUID('4', { each: true })
permissionIds: string[];
}

View File

@@ -0,0 +1,8 @@
import { ArrayMinSize, IsArray, IsUUID } from "class-validator";
export class SetRolePermissionsDto {
@IsArray()
@ArrayMinSize(1)
@IsUUID('4', { each: true })
permissionIds: string[];
}

View File

@@ -24,6 +24,14 @@ export class PermissionService {
})
}
async findPermissionByIds(permissionIds: string[]): Promise<Permission[]> {
return this.permissionRepository.find({
where: {
id: In(permissionIds),
}
});
}
async list() {
return this.permissionRepository.find();
}