Files
magistr/frontend/admin/js/role-capabilities.js
2026-07-19 14:40:43 +03:00

47 lines
1.6 KiB
JavaScript

const capabilities = {
ADMIN: {
defaultAdminTab: 'dashboard',
adminTabs: ['dashboard', 'teacher-requests', 'schedule', 'academic-calendar', 'auditorium-workload', 'schedule-view', 'classrooms', 'groups', 'university-structure', 'subjects', 'users'],
defaultSettingsTab: 'general',
settingsTabs: ['general', 'time-slots', 'database', 'edu-forms']
},
EDUCATION_OFFICE: {
defaultAdminTab: 'dashboard',
adminTabs: ['dashboard', 'schedule', 'academic-calendar', 'auditorium-workload', 'schedule-view', 'classrooms'],
defaultSettingsTab: 'time-slots',
settingsTabs: ['time-slots', 'edu-forms']
},
DEPARTMENT: {
defaultAdminTab: 'department-workspace',
adminTabs: ['department-workspace', 'schedule-view'],
defaultSettingsTab: null,
settingsTabs: []
},
SCHEDULE_VIEWER: {
defaultAdminTab: 'schedule-view',
adminTabs: ['schedule-view'],
defaultSettingsTab: null,
settingsTabs: []
}
};
export const ROLE_CAPABILITIES = Object.freeze(
Object.fromEntries(Object.entries(capabilities).map(([role, value]) => [
role,
Object.freeze({
...value,
adminTabs: Object.freeze([...value.adminTabs]),
settingsTabs: Object.freeze([...value.settingsTabs])
})
]))
);
export const ADMIN_APP_ROLES = Object.freeze(Object.keys(ROLE_CAPABILITIES));
export const SETTINGS_ROLES = Object.freeze(
ADMIN_APP_ROLES.filter(role => ROLE_CAPABILITIES[role].settingsTabs.length > 0)
);
export function capabilitiesForRole(role) {
return ROLE_CAPABILITIES[role] || null;
}