update
This commit is contained in:
122
src/seeders/rolePermission.ts
Normal file
122
src/seeders/rolePermission.ts
Normal file
@@ -0,0 +1,122 @@
|
||||
import Role from "../models/Role";
|
||||
import Permission from "../models/Permission";
|
||||
import RolePermission from "../models/RolePermission";
|
||||
|
||||
export async function seedRolePermissions() {
|
||||
const roles = await Role.findAll();
|
||||
const permissions = await Permission.findAll();
|
||||
|
||||
const roleMap: any = {};
|
||||
roles.forEach((r: any) => (roleMap[r.name] = r));
|
||||
|
||||
const permissionMap: any = {};
|
||||
permissions.forEach((p: any) => (permissionMap[p.name] = p));
|
||||
|
||||
const assignPermissions = async (
|
||||
roleName: string,
|
||||
permissionNames: string[],
|
||||
) => {
|
||||
const role = roleMap[roleName];
|
||||
if (!role) return;
|
||||
|
||||
for (const permName of permissionNames) {
|
||||
const permission = permissionMap[permName];
|
||||
if (!permission) continue;
|
||||
|
||||
await RolePermission.findOrCreate({
|
||||
where: {
|
||||
roleId: role.id,
|
||||
permissionId: permission.id,
|
||||
},
|
||||
defaults: {
|
||||
roleId: role.id,
|
||||
permissionId: permission.id,
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* =========================================
|
||||
✅ MANAGER (دسترسی بالا)
|
||||
========================================== */
|
||||
await assignPermissions("manager", [
|
||||
// tickets
|
||||
"ticket.view_all",
|
||||
"ticket.assign",
|
||||
"ticket.change_status",
|
||||
"ticket.export",
|
||||
|
||||
// users
|
||||
"user.view_all",
|
||||
"user.create",
|
||||
"user.update",
|
||||
|
||||
// reports
|
||||
"report.system.view",
|
||||
"report.department.view",
|
||||
"report.operator.view",
|
||||
"report.sla.view",
|
||||
"report.kpi.view",
|
||||
|
||||
"report.system.export",
|
||||
"report.department.export",
|
||||
|
||||
// dashboard
|
||||
"dashboard.view_advanced",
|
||||
|
||||
// operator
|
||||
"operator.performance.view",
|
||||
]);
|
||||
|
||||
/* =========================================
|
||||
✅ SUPERVISOR
|
||||
========================================== */
|
||||
await assignPermissions("supervisor", [
|
||||
"ticket.view_all",
|
||||
"ticket.assign",
|
||||
"ticket.change_status",
|
||||
"ticket.comment",
|
||||
|
||||
"report.department.view",
|
||||
"report.operator.view",
|
||||
|
||||
"dashboard.view",
|
||||
]);
|
||||
|
||||
/* =========================================
|
||||
✅ SENIOR EXPERT
|
||||
========================================== */
|
||||
await assignPermissions("senior_expert", [
|
||||
"ticket.view",
|
||||
"ticket.change_status",
|
||||
"ticket.comment",
|
||||
"ticket.internal_note",
|
||||
|
||||
"dashboard.view",
|
||||
]);
|
||||
|
||||
/* =========================================
|
||||
✅ EXPERT
|
||||
========================================== */
|
||||
await assignPermissions("expert", [
|
||||
"ticket.view",
|
||||
"ticket.change_status",
|
||||
"ticket.comment",
|
||||
]);
|
||||
|
||||
/* =========================================
|
||||
✅ TECHNICIAN
|
||||
========================================== */
|
||||
await assignPermissions("technician", ["ticket.view", "ticket.comment"]);
|
||||
|
||||
/* =========================================
|
||||
✅ NORMAL USER
|
||||
========================================== */
|
||||
await assignPermissions("user", [
|
||||
"ticket.create",
|
||||
"ticket.view",
|
||||
"ticket.comment",
|
||||
]);
|
||||
|
||||
console.log("✅ RolePermissions seeded successfully");
|
||||
}
|
||||
Reference in New Issue
Block a user