This commit is contained in:
2026-06-07 14:21:02 +03:30
parent db32d35fe7
commit 7d8aeea90f
13 changed files with 486 additions and 13 deletions

View 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");
}