EventBuzz_Backend/scripts/generate-permission-json-fi...

58 lines
2.7 KiB
JavaScript

/**
* One-time generator: writes backend/src/config/permissions/*.json from the canonical catalog.
* Run: node backend/scripts/generate-permission-json-files.js
*/
const fs = require('fs');
const path = require('path');
const DIR = path.join(__dirname, '../src/config/permissions');
const FEATURES = [
['participants', 'Participants', 'portfolio'],
['event_website', 'Event Website', 'website'],
['customise_event_website', 'Customise event website', 'website'],
['custom_domain', 'Custom Domain', 'website'],
['invites_rsvp', 'Invites +RSVP', 'registration'],
['registration_forms_with_custom_fields', 'Registration forms with Custom fields', 'registration'],
['custom_registration_workflow', 'Custom Registration workflow', 'registration'],
['email_confirmation_reminders', 'Email Confirmation & Reminders', 'comms'],
['email_outreach_campaigns', 'Email outreach campaigns', 'comms'],
['custom_badge_and_print_file_creation', 'Custom Badge and print file creation', 'design'],
['whatsapp_confirmation_reminders', 'WhatsApp confirmation & reminders', 'comms'],
['bring_your_wa_number', 'Bring your WA number', 'comms'],
['custom_template_for_wa_messaging', 'Custom template for WA messaging', 'comms'],
['agenda_builder', 'Agenda builder', 'agenda'],
['multi_track_agenda', 'Multi track agenda', 'agenda'],
['speaker_management', 'Speaker management', 'agenda'],
['abstract_management', 'Abstract management', 'agenda'],
['ticketing_free_and_paid', 'Ticketing free & paid', 'payments'],
['collect_payment_using_your_upi_qr', 'Collect Payment using your UPI QR', 'payments'],
['payment_gateway_integration', 'Payment gateway integration', 'payments'],
['qna_with_moderation', 'QnA with moderation', 'engagement'],
['live_polls', 'Live Polls', 'engagement'],
['multiple_quiz_modes', 'Multiple Quiz modes', 'engagement'],
['word_cloud', 'Word Cloud', 'engagement'],
['custom_theme', 'Custom Theme', 'branding'],
['ai_summarization', 'AI Summarization', 'ai'],
['ai_engagement_insights', 'AI Engagement insights', 'ai'],
['content_management', 'Content management', 'content'],
['ratings_for_sessions_and_speakers', 'Ratings for sessions and speakers', 'feedback'],
['feedback_forms_and_surveys', 'Feedback forms & Surveys', 'feedback'],
['gamification', 'Gamification', 'engagement'],
['push_notifications', 'Push Notifications', 'comms'],
];
fs.mkdirSync(DIR, { recursive: true });
for (const [key, label, category] of FEATURES) {
const file = path.join(DIR, `${key}.json`);
const doc = {
key,
label,
description: '',
category,
};
fs.writeFileSync(file, `${JSON.stringify(doc, null, 2)}\n`, 'utf8');
console.log('wrote', path.basename(file));
}
console.log('done', FEATURES.length, 'files');