61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
|
|
/**
|
|||
|
|
* Единый источник прав портала: роли, разделы по умолчанию, scope по умолчанию.
|
|||
|
|
* Используется на фронте и синхронизируется с backend/constants/roleAccess.js.
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
export type UserRole =
|
|||
|
|
| 'DIRECTOR'
|
|||
|
|
| 'ENGINEER'
|
|||
|
|
| 'MASTER'
|
|||
|
|
| 'LAWYER'
|
|||
|
|
| 'FINANCIER'
|
|||
|
|
| 'HR_MANAGER'
|
|||
|
|
| 'PR_MANAGER';
|
|||
|
|
|
|||
|
|
/** Названия ролей для UI */
|
|||
|
|
export const ROLE_NAMES: Record<UserRole, string> = {
|
|||
|
|
DIRECTOR: 'Директор',
|
|||
|
|
ENGINEER: 'Гл. Инженер',
|
|||
|
|
MASTER: 'Мастер',
|
|||
|
|
LAWYER: 'Юрист',
|
|||
|
|
FINANCIER: 'Финансист',
|
|||
|
|
HR_MANAGER: 'HR-менеджер',
|
|||
|
|
PR_MANAGER: 'PR-менеджер',
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/** Разделы по умолчанию для каждой роли (при пустом permissions) */
|
|||
|
|
export const ROLE_ACCESS: Record<UserRole, string[]> = {
|
|||
|
|
DIRECTOR: ['all'],
|
|||
|
|
ENGINEER: ['dashboard', 'objects', 'requests', 'office', 'development'],
|
|||
|
|
MASTER: ['objects', 'requests'],
|
|||
|
|
LAWYER: ['dashboard', 'legal', 'objects', 'requests'],
|
|||
|
|
FINANCIER: ['dashboard', 'finance', 'office', 'objects'],
|
|||
|
|
HR_MANAGER: ['dashboard', 'hr', 'office'],
|
|||
|
|
PR_MANAGER: ['dashboard', 'pr', 'requests'],
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/** Scope по умолчанию для каждой роли */
|
|||
|
|
export const ROLE_DEFAULT_SCOPE: Record<UserRole, 'all' | 'own_district'> = {
|
|||
|
|
DIRECTOR: 'all',
|
|||
|
|
ENGINEER: 'all',
|
|||
|
|
MASTER: 'own_district',
|
|||
|
|
LAWYER: 'all',
|
|||
|
|
FINANCIER: 'all',
|
|||
|
|
HR_MANAGER: 'all',
|
|||
|
|
PR_MANAGER: 'all',
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/** Список кодов разделов портала (порядок для allowedSections) */
|
|||
|
|
export const SECTION_IDS: string[] = [
|
|||
|
|
'dashboard',
|
|||
|
|
'objects',
|
|||
|
|
'requests',
|
|||
|
|
'pr',
|
|||
|
|
'finance',
|
|||
|
|
'legal',
|
|||
|
|
'development',
|
|||
|
|
'hr',
|
|||
|
|
'office',
|
|||
|
|
'admin',
|
|||
|
|
];
|