Files
request-portal/docs/permissions.md
T
gorbenko.pavel 637e51d7f9
Tests / frontend-test (push) Successful in 1m24s
Feature/vacation edo signing (#23)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/23
2026-10-05 08:53:18 +00:00

8.4 KiB
Raw Blame History

Особые права в портале — реестр

Здесь собраны все места, где кому-то выданы права сверх обычных. Обычные права такие: автор правит свою незавершённую заявку, согласующий или исполнитель решает на своём активном шаге.

Многие права пока выданы по email или по должности прямо в коде. Это временно: план — переехать на группы SharePoint. Этот файл нужен, чтобы при переезде, смене сотрудника или разборе «почему у него есть или нет кнопки» ничего не потерять.

Правило. Добавили, изменили или убрали особое право — поправьте таблицу ниже в том же коммите.

Сводная таблица

Право Кто Как определяется Где действует Файл с проверкой
Удалять согласующих, которые ещё ждут очереди Алтынай Бултурукова, Павел Горбенко email в коде Подбор, Приём, Реферальная рекомендация: и при составлении, и в поданной заявке shared/approval/routeEditRights.ts → canEditRoute
Удалять любых согласующих при составлении заявки те же (canEditRoute) email в коде Все остальные формы с маршрутом согласования (отпуск, увольнение, 1С и т. д.); в поданной заявке — нет shared/approval/routeEditRights.ts → composeRemoveRowRule
Добавлять и удалять исполнителей при составлении заявки те же (canEditRoute) email в коде Все формы, где в маршруте из админки есть фаза исполнения; в поданной заявке — нет shared/approval/routeEditRights.ts → canEditExecutors
Заменять и удалять исполнителей, в том числе активного («На исполнении») Алтынай Бултурукова тот же email (canEditRoute) Только Заявка на подбор, матрица «Исполнение» canEditRoute + forms/RecruitingSelection/RecruitingSelectionView.tsx
Править все поля заявки на своём активном шаге согласования (без вложений) Алтынай Бултурукова email в коде Подбор, Приём (Реферальная рекомендация — нет) shared/approval/fullEditRights.ts → canEditAllFields
Править оклад на ИС, оклад после ИС, «Отдел/Участок» на своём шаге согласования Начальник расчётной группы (сейчас Ким Анна) должность шага: «начальник/руководитель» + «расчет» Заявка на приём forms/RecruitingHire/approverRights.ts → canEditPayrollFields
Ставить дату приёма (2.2) Активный исполнитель роль в маршруте (шаг «Исполнение»), без проверки должности Заявка на приём forms/RecruitingHire/RecruitingHireView.tsx (hireDateEditable)
Править карту СКУД и сумму за обучение Начальник отдела кадрового делопроизводства должность шага: «начальник/руководитель» + «кадров» + «делопроизводств» Обходной лист forms/Clearance/approverRights.ts → canEditHrRecordsFields
Править парковочную карту Начальник отдела подбора и адаптации должность шага: «начальник/руководитель» + «подбор» + «адаптац» Обходной лист forms/Clearance/approverRights.ts → canEditParkingField
Видеть раздел «Отчёты» Группа SP «Отчеты по заявкам» (Id 199) и всегда: Тришина М., Городецкий Т., Горбенко П., Сарниязова А. группа SharePoint + email в коде Боковое меню shared/reports/reportsAccess.ts → hasReportsAccess
Видеть «Все заявки» типа (чужие тоже, только просмотр) Список email для каждого типа настраивается в админке approval-route, не в коде Раздел «Все заявки» shared/approval/requestTypeAccess.ts
Подавать заявки, пока действует заморозка Группа SP «Тестирование» (Id 124) группа SharePoint Все замороженные формы (разморожены для всех: 1С, Подбор, Приём, Реферал, Рабочее место) shared/ui/SubmitActions/SubmitActions.tsx (SUBMISSION_FROZEN, UNFROZEN_FORMS) + testerGroupAccess.ts
Открывать формы «в разработке» (comingSoon) Группа SP «Тестирование» (Id 124) группа SharePoint Плитки и формы с comingSoon shared/useIsTester.ts, components/RequestGrid/RequestGrid.tsx, features/submit/SubmitFeature.tsx
Отладочная подмена личности (портал работает от имени другого сотрудника) Тот, кто может править свойства веб-части на странице (владельцы или редакторы сайта) поле в свойствах веб-части Весь портал; на экране красная плашка shared/impersonation.ts

Как проверяются права по должности

Права «по должности» (приём, обходной лист) сравнивают ключевые слова в должности шага маршрута: это колонка Title строки согласования, её подставляет маршрут при планировании. Обязателен управленческий маркер «начальник»/«руководитель», иначе право получили бы рядовые сотрудники того же отдела.

Риск: опечатка или переформулировка должности в кадровом справочнике молча отключит право. Случайное совпадение слов может выдать его не тому человеку.

Что сделать при переезде на группы SharePoint

  1. Под каждый набор прав завести группу на сайте данных (/sites/requests).
  2. В коде проверять членство по Id группы, а не по Title, как уже сделано в reportsAccess.ts и testerGroupAccess.ts.
  3. Проверка должна учитывать отладочную подмену личности (effectiveUserEmail, см. reportsAccess.ts). Иначе под подменой будут проверяться права настоящего пользователя.
  4. Обновить эту таблицу.

Известные ограничения

  • Замена активного исполнителя (подбор). Если прежний исполнитель держит заявку открытой и, не обновив страницу, нажмёт «Выполнено», решение запишется в шаг, который уже принадлежит новому исполнителю. При решении пока не перепроверяется, что шаг всё ещё за этим человеком (ApproverService.decide).