实现角色权限管理
This commit is contained in:
@@ -8,6 +8,7 @@ import { UserModule } from 'src/user/user.module';
|
|||||||
import { RoleModule } from 'src/role/role.module';
|
import { RoleModule } from 'src/role/role.module';
|
||||||
import { AdminRoleController } from './controller/admin-role.controller';
|
import { AdminRoleController } from './controller/admin-role.controller';
|
||||||
import { AdminPermissionController } from './controller/admin-permission.controller';
|
import { AdminPermissionController } from './controller/admin-permission.controller';
|
||||||
|
import { AdminRolePermissionController } from './controller/admin-role-permission.controller';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -22,6 +23,7 @@ import { AdminPermissionController } from './controller/admin-permission.control
|
|||||||
AdminUserController,
|
AdminUserController,
|
||||||
AdminRoleController,
|
AdminRoleController,
|
||||||
AdminPermissionController,
|
AdminPermissionController,
|
||||||
|
AdminRolePermissionController,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
AdminUserService,
|
AdminUserService,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import { ArrayMinSize, IsArray, IsUUID } from "class-validator";
|
||||||
|
|
||||||
|
export class DeleteRolePermissionsDto {
|
||||||
|
@IsArray()
|
||||||
|
@ArrayMinSize(1)
|
||||||
|
@IsUUID('4', { each: true })
|
||||||
|
permissionIds: string[];
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import { ArrayMinSize, IsArray, IsUUID } from "class-validator";
|
||||||
|
|
||||||
|
export class SetRolePermissionsDto {
|
||||||
|
@IsArray()
|
||||||
|
@ArrayMinSize(1)
|
||||||
|
@IsUUID('4', { each: true })
|
||||||
|
permissionIds: string[];
|
||||||
|
}
|
||||||
@@ -24,6 +24,14 @@ export class PermissionService {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async findPermissionByIds(permissionIds: string[]): Promise<Permission[]> {
|
||||||
|
return this.permissionRepository.find({
|
||||||
|
where: {
|
||||||
|
id: In(permissionIds),
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async list() {
|
async list() {
|
||||||
return this.permissionRepository.find();
|
return this.permissionRepository.find();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user