This commit is contained in:
2025-11-21 15:48:38 +03:30
parent f07837cfdb
commit 89593d0f2e
5 changed files with 40 additions and 12 deletions
@@ -10,7 +10,10 @@ export class Permission extends BaseEntity {
@Property()
title!: string;
// اضافه شد
@Property({ default: 'general' })
group!: string;
@ManyToMany({ entity: () => Role, mappedBy: r => r.permissions })
@ManyToMany({ entity: () => Role, mappedBy: 'permissions' })
roles = new Collection<Role>(this);
}
@@ -49,6 +49,11 @@ export class RolesService {
if (permissions.length !== permissionIds.length) {
throw new BadRequestException('One or more permissions not found');
}
// Check if any permission is special
const specialPermissions = permissions.filter(p => p.group === 'special');
if (specialPermissions.length > 0) {
throw new BadRequestException('Special permissions cannot be assigned to roles');
}
permissions.forEach(p => role.permissions.add(p));
}
@@ -122,6 +127,11 @@ export class RolesService {
if (permissions.length !== dto.permissionIds.length) {
throw new BadRequestException('One or more permissions not found');
}
// Check if any permission is special
const specialPermissions = permissions.filter(p => p.group === 'special');
if (specialPermissions.length > 0) {
throw new BadRequestException('Special permissions cannot be assigned to roles');
}
permissions.forEach(p => role.permissions.add(p));
}
+6 -3
View File
@@ -8,6 +8,7 @@ import { FindRolesDto } from './dto/find-roles.dto';
import { AdminAuthGuard } from '../auth/guards/adminAuth.guard';
import { Permissions } from '../auth/decorators/permissions.decorator';
import { RestId } from 'src/common/decorators';
import { AdminId } from 'src/common/decorators/admin-id.decorator';
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@@ -27,10 +28,12 @@ export class RolesController {
}
@Get('permissions')
@ApiOperation({ summary: 'Get all permissions' })
@ApiOperation({ summary: 'Get all permissions that the admin has' })
@ApiResponse({ status: 200, description: 'Permissions retrieved successfully' })
findAllPermissions() {
return this.permissionService.findAll();
async findAllPermissions(@AdminId() adminId: string, @RestId() restId: string) {
const adminPermissionNames = await this.permissionService.getAdminPermissions(adminId, restId);
return adminPermissionNames;
}
@Permissions('create-role')