311 lines
9.2 KiB
TypeScript
311 lines
9.2 KiB
TypeScript
import 'dotenv/config';
|
|
import db from '../src/database/models/index.js';
|
|
import { PERMISSIONS, PERMISSION_CATEGORIES } from '../src/common/config/permissions.js';
|
|
|
|
const { Permission } = db;
|
|
|
|
const permissionsToSeed = [
|
|
// Action Permissions
|
|
{
|
|
code: PERMISSIONS.ACTION_APPROVE,
|
|
name: 'Approve Applications',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'APPROVE',
|
|
description: 'Ability to approve applications'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_REJECT,
|
|
name: 'Reject Applications',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'REJECT',
|
|
description: 'Ability to reject applications'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_UPLOAD_DOCS,
|
|
name: 'Upload Documents',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'UPLOAD_DOCS',
|
|
description: 'Ability to upload documents'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_REQUEST_CHANGES,
|
|
name: 'Request Changes',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'REQUEST_CHANGES',
|
|
description: 'Ability to request changes'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_FORWARD,
|
|
name: 'Forward to Others',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'FORWARD',
|
|
description: 'Ability to forward applications'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_REASSIGN,
|
|
name: 'Reassign Applications',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'REASSIGN',
|
|
description: 'Ability to reassign applications'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_SCHEDULE_INTERVIEW,
|
|
name: 'Schedule Interviews',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'SCHEDULE_INTERVIEW',
|
|
description: 'Ability to schedule interviews'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_ADD_COMMENTS,
|
|
name: 'Add Comments/Notes',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'ADD_COMMENTS',
|
|
description: 'Ability to add comments'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_RANK_APPLICANTS,
|
|
name: 'Rank Applicants',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'RANK_APPLICANTS',
|
|
description: 'Ability to rank applicants'
|
|
},
|
|
{
|
|
code: PERMISSIONS.ACTION_FINAL_APPROVAL,
|
|
name: 'Final Approval',
|
|
category: PERMISSION_CATEGORIES.ACTION,
|
|
module: 'APPLICATIONS',
|
|
type: 'ACTION',
|
|
action: 'FINAL_APPROVAL',
|
|
description: 'Ability to give final approval'
|
|
},
|
|
|
|
// View Permissions
|
|
{
|
|
code: PERMISSIONS.VIEW_DETAILS,
|
|
name: 'Application Details',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_DETAILS',
|
|
description: 'View basic application details'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_FINANCIAL,
|
|
name: 'Financial Information',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_FINANCIAL',
|
|
description: 'View financial information'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_DISCUSSIONS,
|
|
name: 'Discussion Notes',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_DISCUSSIONS',
|
|
description: 'View internal discussion notes'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_PROGRESS,
|
|
name: 'Progress Tracking',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_PROGRESS',
|
|
description: 'View application progress'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_AUDIT,
|
|
name: 'Audit Logs',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_AUDIT',
|
|
description: 'View application audit logs'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_DOCUMENTS,
|
|
name: 'All Documents',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_DOCUMENTS',
|
|
description: 'View all documents'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_PERSONAL,
|
|
name: 'Personal Information',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_PERSONAL',
|
|
description: 'View applicant personal info'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_BUSINESS,
|
|
name: 'Business Details',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_BUSINESS',
|
|
description: 'View applicant business details'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_REPORTS,
|
|
name: 'Reports & Analytics',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_REPORTS',
|
|
description: 'View application reports'
|
|
},
|
|
{
|
|
code: PERMISSIONS.VIEW_HISTORY,
|
|
name: 'Application History',
|
|
category: PERMISSION_CATEGORIES.VIEW,
|
|
module: 'APPLICATIONS',
|
|
type: 'VIEW',
|
|
action: 'VIEW_HISTORY',
|
|
description: 'View status history'
|
|
},
|
|
|
|
// Stage Permissions
|
|
{
|
|
code: PERMISSIONS.STAGE_INITIAL_REVIEW,
|
|
name: 'Initial Review',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Initial Review stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_FIELD_VERIFICATION,
|
|
name: 'Field Verification',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Field Verification stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_LEVEL1_INTERVIEW,
|
|
name: 'Level 1 Interview',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Level 1 Interview stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_LEVEL2_INTERVIEW,
|
|
name: 'Level 2 Interview',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Level 2 Interview stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_RANKING,
|
|
name: 'Ranking & Selection',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Ranking & Selection stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_LEGAL_REVIEW,
|
|
name: 'Legal Review',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Legal Review stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_FINANCIAL_REVIEW,
|
|
name: 'Financial Review',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Financial Review stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_FINAL_APPROVAL,
|
|
name: 'Final Approval',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Final Approval stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_PAYMENT,
|
|
name: 'Payment Verification',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Payment Verification stage'
|
|
},
|
|
{
|
|
code: PERMISSIONS.STAGE_ONBOARDING,
|
|
name: 'Onboarding',
|
|
category: PERMISSION_CATEGORIES.STAGE,
|
|
module: 'WORKFLOW',
|
|
type: 'STAGE_ACCESS',
|
|
action: 'ACCESS',
|
|
description: 'Access to Onboarding stage'
|
|
}
|
|
];
|
|
|
|
async function seedPermissions() {
|
|
console.log('🌱 Seeding permissions...');
|
|
try {
|
|
await db.sequelize.authenticate();
|
|
|
|
for (const p of permissionsToSeed) {
|
|
await Permission.upsert({
|
|
permissionCode: p.code,
|
|
permissionName: p.name,
|
|
permissionCategory: p.category,
|
|
module: p.module,
|
|
permissionType: p.type,
|
|
action: p.action,
|
|
description: p.description
|
|
});
|
|
}
|
|
|
|
console.log('✅ Permissions seeded successfully!');
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('❌ Seeding failed:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
seedPermissions();
|