Files
gameno-api/constants/permissions.js
T
kavehhn 22b57eeae2 Add professor share calculation and financial reporting feature
Introduces per-class payout configuration (percentage or hourly rate,
plus an optional per-session expense allowance), pure calculation
utilities for professor payout/net profit/receivables, and a new
financial-reports API surface with per-class, per-session, and
date-range/monthly reports. Also adds full CRUD for institutional
expenses used in the range report, and wires up the new permissions
and roles. Fixes a pre-existing ReferenceError (missing
parseImportDate import) in paymentService that blocked creating
payments with dated transactions.
2026-08-21 12:19:09 +03:30

111 lines
3.3 KiB
JavaScript

// /constants/permissions.js
const PERMISSIONS = {
// Users permissions
USERS_CREATE: 'users:create',
USERS_READ: 'users:read',
USERS_UPDATE: 'users:update',
USERS_DELETE: 'users:delete',
USERS_SEARCH: 'users:search',
USERS_ENROLL: 'users:enroll',
// Professors permissions
PROFESSORS_CREATE: 'professors:create',
PROFESSORS_READ: 'professors:read',
PROFESSORS_UPDATE: 'professors:update',
PROFESSORS_DELETE: 'professors:delete',
PROFESSORS_SEARCH: 'professors:search',
// Courses permissions
COURSES_CREATE: 'courses:create',
COURSES_READ: 'courses:read',
COURSES_UPDATE: 'courses:update',
COURSES_DELETE: 'courses:delete',
COURSES_SEARCH: 'courses:search',
// Classes permissions
CLASSES_CREATE: 'classes:create',
CLASSES_READ: 'classes:read',
CLASSES_UPDATE: 'classes:update',
CLASSES_DELETE: 'classes:delete',
CLASSES_SEARCH: 'classes:search',
CLASSES_REGISTER_USERS: 'classes:register_users',
// Sessions permissions
SESSIONS_CREATE: 'sessions:create',
SESSIONS_READ: 'sessions:read',
SESSIONS_UPDATE: 'sessions:update',
SESSIONS_DELETE: 'sessions:delete',
SESSIONS_SEARCH: 'sessions:search',
SESSIONS_ATTENDANCE: 'sessions:attendance',
// Payments permissions
PAYMENTS_CREATE: 'payments:create',
PAYMENTS_READ: 'payments:read',
PAYMENTS_UPDATE: 'payments:update',
PAYMENTS_DELETE: 'payments:delete',
PAYMENTS_SEARCH: 'payments:search',
// Roles permissions
ROLES_CREATE: 'roles:create',
ROLES_READ: 'roles:read',
ROLES_UPDATE: 'roles:update',
ROLES_DELETE: 'roles:delete',
ROLES_SEARCH: 'roles:search',
// Notifications permissions
NOTIFICATIONS_CREATE: 'notifications:create',
NOTIFICATIONS_READ: 'notifications:read',
NOTIFICATIONS_UPDATE: 'notifications:update',
NOTIFICATIONS_DELETE: 'notifications:delete',
NOTIFICATIONS_SEARCH: 'notifications:search',
NOTIFICATIONS_RETRY: 'notifications:retry',
// Certificates permissions
CERTIFICATES_CREATE: 'certificates:create',
CERTIFICATES_READ: 'certificates:read',
CERTIFICATES_UPDATE: 'certificates:update',
CERTIFICATES_DELETE: 'certificates:delete',
CERTIFICATES_SEARCH: 'certificates:search',
// Documents permissions (private user documents)
DOCUMENTS_CREATE: 'documents:create',
DOCUMENTS_READ: 'documents:read',
DOCUMENTS_UPDATE: 'documents:update',
DOCUMENTS_DELETE: 'documents:delete',
DOCUMENTS_SEARCH: 'documents:search',
// Files permissions
FILES_UPLOAD: 'files:upload',
FILES_READ: 'files:read',
FILES_DELETE: 'files:delete',
// Activity logs permissions
LOGS_READ: 'logs:read',
LOGS_SEARCH: 'logs:search',
// Contact inquiries (website form)
CONTACT_INQUIRIES_READ: 'contact_inquiries:read',
CONTACT_INQUIRIES_UPDATE: 'contact_inquiries:update',
// Pending student registrations
PENDING_STUDENTS_READ: 'pending_students:read',
PENDING_STUDENTS_UPDATE: 'pending_students:update',
// Institutional expenses (used for financial reporting)
EXPENSES_CREATE: 'expenses:create',
EXPENSES_READ: 'expenses:read',
EXPENSES_UPDATE: 'expenses:update',
EXPENSES_DELETE: 'expenses:delete',
// Financial reports (professor share, class profitability, date-range analytics)
FINANCIAL_REPORTS_READ: 'financial_reports:read'
};
const ALL_PERMISSIONS = Object.values(PERMISSIONS);
module.exports = {
PERMISSIONS,
ALL_PERMISSIONS
};