实现权限管理的服务
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Entity, Index, PrimaryColumn } from "typeorm";
|
||||
|
||||
@Entity()
|
||||
@Index(['roleId', 'permissionId'])
|
||||
@Index(['roleId', 'permissionId'], { unique: true })
|
||||
export class RolePermission {
|
||||
@PrimaryColumn('uuid')
|
||||
roleId: string;
|
||||
|
||||
@@ -7,4 +7,7 @@ export class Role {
|
||||
|
||||
@Column({ unique: true })
|
||||
name: string;
|
||||
|
||||
@Column()
|
||||
localName: string;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { BadRequestException, Injectable } from "@nestjs/common";
|
||||
import { InjectRepository } from "@nestjs/typeorm";
|
||||
import { Permission } from "../entities/permission.entity";
|
||||
import { In, Repository } from "typeorm";
|
||||
@@ -23,4 +23,21 @@ export class PermissionService {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async list() {
|
||||
return this.permissionRepository.find();
|
||||
}
|
||||
|
||||
async create(permission: Pick<Permission, 'name' | 'description'>): Promise<Permission> {
|
||||
const newPermission = this.permissionRepository.create(permission);
|
||||
return this.permissionRepository.save(newPermission);
|
||||
}
|
||||
|
||||
async delete(permissionId: string): Promise<void> {
|
||||
const existingPermission = await this.permissionRepository.findOne({ where: { id: permissionId } });
|
||||
if (!existingPermission) {
|
||||
throw new BadRequestException('Permission not found');
|
||||
}
|
||||
await this.permissionRepository.delete(existingPermission.id);
|
||||
}
|
||||
}
|
||||
@@ -20,4 +20,23 @@ export class RolePermissionService {
|
||||
|
||||
return rolePermissions.map(rp => rp.permissionId);
|
||||
}
|
||||
|
||||
async addRolePermissions(roleId: string, permissionIds: string[]): Promise<void> {
|
||||
const rolePermissions = permissionIds.map(permissionId => {
|
||||
const rolePermission = this.rolePermissionRepository.create({
|
||||
roleId,
|
||||
permissionId,
|
||||
});
|
||||
return rolePermission;
|
||||
});
|
||||
|
||||
await this.rolePermissionRepository.save(rolePermissions);
|
||||
}
|
||||
|
||||
async deleteRolePermissions(roleId: string, permissionIds: string[]): Promise<void> {
|
||||
await this.rolePermissionRepository.delete({
|
||||
roleId,
|
||||
permissionId: In(permissionIds),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { BadRequestException, Injectable } from "@nestjs/common";
|
||||
import { InjectRepository } from "@nestjs/typeorm";
|
||||
import { Role } from "../entities/role.entity";
|
||||
import { In, Repository } from "typeorm";
|
||||
@@ -23,4 +23,21 @@ export class RoleService {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async create(role: Pick<Role, 'name' | 'localName'>): Promise<Role> {
|
||||
const newRole = this.roleRepository.create(role);
|
||||
return this.roleRepository.save(newRole);
|
||||
}
|
||||
|
||||
async list(): Promise<Role[]> {
|
||||
return this.roleRepository.find();
|
||||
}
|
||||
|
||||
async delete(roleId: string): Promise<void> {
|
||||
const existingRole = await this.roleRepository.findOne({ where: { id: roleId } });
|
||||
if (!existingRole) {
|
||||
throw new BadRequestException('Role not found');
|
||||
}
|
||||
await this.roleRepository.delete(existingRole.id);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user