47 lines
1.6 KiB
JavaScript
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;
|
|
}
|