diff --git a/tone-page-server/src/role/entities/role-permission.entity.ts b/tone-page-server/src/role/entities/role-permission.entity.ts index c717901..24fe6a9 100644 --- a/tone-page-server/src/role/entities/role-permission.entity.ts +++ b/tone-page-server/src/role/entities/role-permission.entity.ts @@ -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; diff --git a/tone-page-server/src/role/entities/role.entity.ts b/tone-page-server/src/role/entities/role.entity.ts index 09a750a..762907d 100644 --- a/tone-page-server/src/role/entities/role.entity.ts +++ b/tone-page-server/src/role/entities/role.entity.ts @@ -7,4 +7,7 @@ export class Role { @Column({ unique: true }) name: string; + + @Column() + localName: string; } \ No newline at end of file diff --git a/tone-page-server/src/role/services/permission.service.ts b/tone-page-server/src/role/services/permission.service.ts index f6642f8..bf30976 100644 --- a/tone-page-server/src/role/services/permission.service.ts +++ b/tone-page-server/src/role/services/permission.service.ts @@ -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): Promise { + const newPermission = this.permissionRepository.create(permission); + return this.permissionRepository.save(newPermission); + } + + async delete(permissionId: string): Promise { + const existingPermission = await this.permissionRepository.findOne({ where: { id: permissionId } }); + if (!existingPermission) { + throw new BadRequestException('Permission not found'); + } + await this.permissionRepository.delete(existingPermission.id); + } } \ No newline at end of file diff --git a/tone-page-server/src/role/services/role-permission.service.ts b/tone-page-server/src/role/services/role-permission.service.ts index 82a1066..87381ba 100644 --- a/tone-page-server/src/role/services/role-permission.service.ts +++ b/tone-page-server/src/role/services/role-permission.service.ts @@ -20,4 +20,23 @@ export class RolePermissionService { return rolePermissions.map(rp => rp.permissionId); } + + async addRolePermissions(roleId: string, permissionIds: string[]): Promise { + 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 { + await this.rolePermissionRepository.delete({ + roleId, + permissionId: In(permissionIds), + }); + } } \ No newline at end of file diff --git a/tone-page-server/src/role/services/role.service.ts b/tone-page-server/src/role/services/role.service.ts index 0324e7e..9c3f352 100644 --- a/tone-page-server/src/role/services/role.service.ts +++ b/tone-page-server/src/role/services/role.service.ts @@ -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): Promise { + const newRole = this.roleRepository.create(role); + return this.roleRepository.save(newRole); + } + + async list(): Promise { + return this.roleRepository.find(); + } + + async delete(roleId: string): Promise { + const existingRole = await this.roleRepository.findOne({ where: { id: roleId } }); + if (!existingRole) { + throw new BadRequestException('Role not found'); + } + await this.roleRepository.delete(existingRole.id); + } } \ No newline at end of file