update roles and permissions
This commit is contained in:
@@ -1,15 +1,10 @@
|
||||
import { Permission, PermissionTitles } from '../../common/enums/permission.enum';
|
||||
|
||||
export const specialPermissions = [
|
||||
Permission.CREATE_RESTAURANT,
|
||||
Permission.DELETE_RESTAURANT,
|
||||
Permission.UPDATE_RESTAURANT,
|
||||
];
|
||||
|
||||
|
||||
export const getPermissionsData = () => {
|
||||
return Object.values(Permission).map(name => ({
|
||||
name,
|
||||
title: PermissionTitles[name],
|
||||
group: specialPermissions.includes(name) ? 'special' : 'general',
|
||||
}));
|
||||
};
|
||||
|
||||
@@ -10,20 +10,12 @@ export const rolesData: RoleConfig[] = [
|
||||
{
|
||||
name: 'restaurant',
|
||||
isSystem: false,
|
||||
permissionFilter: () => true, // Will be filtered by group in seeder
|
||||
permissionFilter: () => true, // All permissions for restaurant role
|
||||
},
|
||||
{
|
||||
name: 'accountant',
|
||||
isSystem: false,
|
||||
permissionFilter: (name: Permission) =>
|
||||
name === Permission.VIEW_REPORTS || name === Permission.MANAGE_FINANCES || name === Permission.MANAGE_ORDERS,
|
||||
},
|
||||
{
|
||||
name: 'superAdmin',
|
||||
isSystem: true,
|
||||
permissionFilter: (name: Permission) =>
|
||||
name === Permission.CREATE_RESTAURANT ||
|
||||
name === Permission.DELETE_RESTAURANT ||
|
||||
name === Permission.UPDATE_RESTAURANT,
|
||||
name === Permission.VIEW_REPORTS || name === Permission.MANAGE_PAYMENTS || name === Permission.MANAGE_ORDERS,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -13,9 +13,9 @@ export class PermissionsSeeder {
|
||||
permission = em.create(PermissionEntity, permData);
|
||||
em.persist(permission);
|
||||
} else {
|
||||
// Update existing permission's group if it changed
|
||||
if (permission.group !== permData.group) {
|
||||
permission.group = permData.group;
|
||||
// Update existing permission's title if it changed
|
||||
if (permission.title !== permData.title) {
|
||||
permission.title = permData.title;
|
||||
em.persist(permission);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,15 +19,9 @@ export class RolesSeeder {
|
||||
// Add permissions based on role configuration
|
||||
// TypeScript knows role is not null here because we just created it
|
||||
const newRole = role;
|
||||
if (roleConfig.name === 'restaurant') {
|
||||
// Add all general permissions to restaurant role
|
||||
const generalPermissions = permissions.filter(p => p.group === 'general');
|
||||
generalPermissions.forEach(p => newRole.permissions.add(p));
|
||||
} else {
|
||||
// For other roles, use the permission filter
|
||||
const filteredPermissions = permissions.filter(p => roleConfig.permissionFilter(p.name as Permission));
|
||||
filteredPermissions.forEach(p => newRole.permissions.add(p));
|
||||
}
|
||||
// Use the permission filter for all roles
|
||||
const filteredPermissions = permissions.filter(p => roleConfig.permissionFilter(p.name as Permission));
|
||||
filteredPermissions.forEach(p => newRole.permissions.add(p));
|
||||
|
||||
em.persist(newRole);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user