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 (دسترسی بالا) ========================================== */ /* ========================================= ✅ MANAGER ========================================= */ /* ========================================= ✅ MANAGER ========================================= */ await assignPermissions("manager", [ /* ---------- Tickets ---------- */ "ticket.view_all", "ticket.assign", "ticket.change_status", "ticket.close", "ticket.reopen", "ticket.merge", "ticket.export", "ticket.create", /* ---------- Users ---------- */ "user.view", "user.view_all", "user.create", "user.update", "user.activate", "user.deactivate", "user.assign_role", /* ---------- Roles ---------- */ "role.view", /* ---------- Permissions ---------- */ "permission.view", "permission.view_all", "permission.assign_to_role", "permission.assign_to_user", /* ---------- Departments ---------- */ "department.view", "department.create", "department.update", /* ---------- Reports ---------- */ "report.system.view", "report.system.export", "report.department.view", "report.department.export", "report.operator.view", "report.operator.export", "report.sla.view", "report.kpi.view", "report.trend.view", "report.closure_rate.view", "report.critical.view", "report.avg_resolution.view", "report.aging.view", "report.agent_efficiency.view", "report.department_load.view", "report.prediction.view", "report.export_excel", /* ---------- Dashboard ---------- */ "dashboard.view_advanced", /* ---------- Operator ---------- */ "operator.view", "operator.performance.view", "operator.performance.export", /* ---------- Logs ---------- */ "log.view", "audit.view", ]); /* ========================================= ✅ SUPERVISOR ========================================= */ await assignPermissions("supervisor", [ /* Tickets */ "ticket.view_all", "ticket.assign", "ticket.change_status", "ticket.comment", "ticket.internal_note", "ticket.close", "ticket.reopen", /* Reports */ "report.department.view", "report.operator.view", "report.trend.view", "report.closure_rate.view", "report.aging.view", /* Dashboard */ "dashboard.view", /* Operator */ "operator.view", "operator.performance.view", ]); /* ========================================= ✅ SENIOR EXPERT ========================================= */ await assignPermissions("senior_expert", [ "ticket.view", "ticket.change_status", "ticket.comment", "ticket.internal_note", "ticket.upload_file", "dashboard.view", ]); /* ========================================= ✅ EXPERT ========================================= */ await assignPermissions("expert", [ "ticket.view", "ticket.change_status", "ticket.comment", "ticket.upload_file", ]); /* ========================================= ✅ TECHNICIAN ========================================= */ await assignPermissions("technician", [ "ticket.view", "ticket.comment", "ticket.upload_file", ]); /* ========================================= ✅ NORMAL USER ========================================= */ await assignPermissions("user", [ "ticket.create", "ticket.view", "ticket.comment", "ticket.upload_file", ]); console.log("✅ RolePermissions seeded successfully"); }