From 0da07417c4a89596f51c92578bb40fb51324feae Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 22 Nov 2025 12:28:26 +0330 Subject: [PATCH] role --- src/common/enums/permission.enum.ts | 4 ++++ src/modules/roles/controllers/roles.controller.ts | 2 +- src/seeders/DatabaseSeeder.ts | 11 ++++++----- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/common/enums/permission.enum.ts b/src/common/enums/permission.enum.ts index 144042e..5d3c014 100644 --- a/src/common/enums/permission.enum.ts +++ b/src/common/enums/permission.enum.ts @@ -24,6 +24,9 @@ export enum Permission { CREATE_RESTAURANT = 'create_restaurant', DELETE_RESTAURANT = 'delete_restaurant', UPDATE_RESTAURANT = 'update_restaurant', + + // Role Management + CREATE_ROLE = 'create_role', } /** @@ -43,4 +46,5 @@ export const PermissionTitles: Record = { [Permission.CREATE_RESTAURANT]: 'ایجاد رستوران', [Permission.DELETE_RESTAURANT]: 'حذف رستوران', [Permission.UPDATE_RESTAURANT]: 'ویرایش رستوران', + [Permission.CREATE_ROLE]: 'ایجاد نقش', }; diff --git a/src/modules/roles/controllers/roles.controller.ts b/src/modules/roles/controllers/roles.controller.ts index b7c6c54..099a079 100644 --- a/src/modules/roles/controllers/roles.controller.ts +++ b/src/modules/roles/controllers/roles.controller.ts @@ -36,7 +36,7 @@ export class RolesController { return adminPermissionNames; } - @Permissions('create-role') + @Permissions('create_role') @Post() @ApiOperation({ summary: 'Create a new role' }) @ApiBody({ type: CreateRoleDto }) diff --git a/src/seeders/DatabaseSeeder.ts b/src/seeders/DatabaseSeeder.ts index 338c9f9..60220fc 100644 --- a/src/seeders/DatabaseSeeder.ts +++ b/src/seeders/DatabaseSeeder.ts @@ -45,8 +45,9 @@ export class DatabaseSeeder extends Seeder { let restaurantRole = await em.findOne(Role, { name: 'restaurant' }); if (!restaurantRole) { const role = em.create(Role, { name: 'restaurant', title: 'رستوران' }); - // Add all permissions to restaurant role (including update_restaurant) - createdPermissions.forEach(p => role.permissions.add(p)); + // Add all general permissions to restaurant role (excluding special permissions) + const generalPermissions = createdPermissions.filter(p => p.group === 'general'); + generalPermissions.forEach(p => role.permissions.add(p)); em.persist(role); restaurantRole = role; } @@ -85,7 +86,7 @@ export class DatabaseSeeder extends Seeder { if (!restaurantRole) { restaurantRole = await em.findOne(Role, { name: 'restaurant' }); } - const accountant = await em.findOne(Role, { name: 'accountant' }); + await em.findOne(Role, { name: 'accountant' }); const superAdmin = await em.findOne(Role, { name: 'superAdmin' }); // 3. Create Restaurants (Farsi) @@ -449,7 +450,7 @@ export class DatabaseSeeder extends Seeder { } const adminHamid = await em.findOne(Admin, { phone: '09185290775' }); - if (!adminHamid && accountant && boote) { + if (!adminHamid && restaurantRole && boote) { const admin = em.create(Admin, { phone: '09185290775', firstName: 'حمید', @@ -460,7 +461,7 @@ export class DatabaseSeeder extends Seeder { // Create AdminRole linking admin to role and restaurant const adminRole = em.create(AdminRole, { admin, - role: accountant, + role: restaurantRole, restaurant: boote, }); em.persist(adminRole);