Add permissions handling to AdminAuthGuard and RoleController; refactor DatabaseSeeder to utilize enums for permissions
This commit is contained in:
@@ -3,34 +3,25 @@ import { Seeder } from '@mikro-orm/seeder';
|
||||
import { Category } from '../modules/foods/entities/category.entity';
|
||||
import { Food } from '../modules/foods/entities/food.entity';
|
||||
import { Admin } from '../modules/admin/entities/admin.entity';
|
||||
import { Permission } from '../modules/admin/entities/permission.entity';
|
||||
import { Permission as PermissionEntity } from '../modules/admin/entities/permission.entity';
|
||||
import { Role } from '../modules/admin/entities/role.entity';
|
||||
import { Restaurant } from '../modules/restaurants/entities/restaurant.entity';
|
||||
import { User } from '../modules/users/entities/user.entity';
|
||||
import { Permission, PermissionTitles } from '../common/enums/permission.enum';
|
||||
|
||||
export class DatabaseSeeder extends Seeder {
|
||||
async run(em: EntityManager) {
|
||||
// 1. Create Permissions (English)
|
||||
const permissions = [
|
||||
{ name: 'manage_foods', title: 'مدیریت غذاها' },
|
||||
{ name: 'manage_categories', title: 'مدیریت دستهبندیها' },
|
||||
{ name: 'manage_orders', title: 'مدیریت سفارشات' },
|
||||
{ name: 'manage_admins', title: 'مدیریت مدیران' },
|
||||
{ name: 'manage_users', title: 'مدیریت کاربران' },
|
||||
{ name: 'view_reports', title: 'مشاهده گزارشات' },
|
||||
{ name: 'manage_finances', title: 'مدیریت مالی' },
|
||||
{ name: 'get_own_restaurant', title: 'مشاهده رستوران خود' },
|
||||
{ name: 'get_all_restaurants', title: 'مشاهده همه رستورانها' },
|
||||
{ name: 'create_restaurant', title: 'ایجاد رستوران' },
|
||||
{ name: 'delete_restaurant', title: 'حذف رستوران' },
|
||||
{ name: 'update_restaurant', title: 'ویرایش رستوران' },
|
||||
];
|
||||
const permissions = Object.values(Permission).map(name => ({
|
||||
name,
|
||||
title: PermissionTitles[name],
|
||||
}));
|
||||
|
||||
const createdPermissions: Permission[] = [];
|
||||
const createdPermissions: PermissionEntity[] = [];
|
||||
for (const permData of permissions) {
|
||||
let permission = await em.findOne(Permission, { name: permData.name });
|
||||
let permission = await em.findOne(PermissionEntity, { name: permData.name });
|
||||
if (!permission) {
|
||||
permission = em.create(Permission, permData);
|
||||
permission = em.create(PermissionEntity, permData);
|
||||
em.persist(permission);
|
||||
}
|
||||
createdPermissions.push(permission);
|
||||
@@ -51,7 +42,10 @@ export class DatabaseSeeder extends Seeder {
|
||||
const role = em.create(Role, { name: 'accountant', title: 'حسابدار' });
|
||||
// Add financial permissions to accountant
|
||||
const financialPerms = createdPermissions.filter(
|
||||
p => p.name === 'view_reports' || p.name === 'manage_finances' || p.name === 'manage_orders',
|
||||
p =>
|
||||
p.name === Permission.VIEW_REPORTS ||
|
||||
p.name === Permission.MANAGE_FINANCES ||
|
||||
p.name === Permission.MANAGE_ORDERS,
|
||||
);
|
||||
financialPerms.forEach(p => role.permissions.add(p));
|
||||
em.persist(role);
|
||||
@@ -62,7 +56,10 @@ export class DatabaseSeeder extends Seeder {
|
||||
const role = em.create(Role, { name: 'superAdmin', title: 'مدیر کل' });
|
||||
// Add restaurant management permissions to superAdmin
|
||||
const restaurantPerms = createdPermissions.filter(
|
||||
p => p.name === 'create_restaurant' || p.name === 'delete_restaurant' || p.name === 'update_restaurant',
|
||||
p =>
|
||||
p.name === Permission.CREATE_RESTAURANT ||
|
||||
p.name === Permission.DELETE_RESTAURANT ||
|
||||
p.name === Permission.UPDATE_RESTAURANT,
|
||||
);
|
||||
restaurantPerms.forEach(p => role.permissions.add(p));
|
||||
em.persist(role);
|
||||
|
||||
Reference in New Issue
Block a user