Files
request-portal/docs/permissions.md
T
Тимур Городецкий 45fc06a6ac feat: раздел «Мебель» в организации рабочего места
Мультивыбор (стол, кресло, тумбочка, канцелярия, другое) с полем своего
значения при «Другое». Необязательный; руководитель на своём шаге правит его
наравне с ПО и доступами. Хранится в WorkplaceFurnitureJson/WorkplaceFurnitureOther
и уходит в маршрут (fieldValues), чтобы шаг исполнения «по мебели» мог
назначаться условием в админке.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-29 17:52:08 +05:00

12 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
Добавлять участников в поданную заявку: согласующего — пока идёт согласование, исполнителя — пока не завершено исполнение; встаёт в конец своего этапа со статусом «Ждёт очереди» те же (canEditRoute) email в коде Только Подбор и Приём canEditRoute + shared/approval/routeStepAdd.ts (правило) + RecruitingSelectionView.tsx / RecruitingHireView.tsx
Менять местами шаги в поданной заявке (и согласующих, и исполнителей): только соседние шаги одной фазы, оба «Ждут очереди»; активный и пройденные шаги не двигаются те же (canEditRoute) email в коде Только Подбор и Приём canEditRoute + shared/approval/queuedStepMove.ts (правило) + RecruitingSelectionView.tsx / RecruitingHireView.tsx
Заменять и удалять исполнителей, в том числе активного («На исполнении») Алтынай Бултурукова тот же email (canEditRoute) Только Заявка на подбор, матрица «Исполнение» canEditRoute + forms/RecruitingSelection/RecruitingSelectionView.tsx
То же в поданной заявке: заменять и удалять невыполненных исполнителей, в том числе активного и себя Исполнители заявки, у которых свой шаг исполнения ещё не выполнен роль в маршруте (фаза «Исполнение»), без списка email Только Заявка в отдел 1С forms/Ticket1C/useExecutorEditing.ts
Править все поля и вложения заявки (добавлять и удалять файлы) на своём активном шаге согласования Алтынай Бултурукова email в коде (список по каждой форме) Подбор, Приём (Реферальная рекомендация — нет) shared/approval/fullEditRights.ts → canEditAllFields
То же: все поля и вложения, но не только на своём шаге: достаточно быть в маршруте (согласование или исполнение), пока заявка «На согласовании» или «Выполнение» Ербол Шаймерденов email в коде (список по каждой форме) + участие в маршруте Только Организация рабочего места shared/approval/fullEditRights.ts → canEditAllFields + forms/WorkplaceSetup/useApproverRights.ts
Заменять человека на шаге согласования (не удалять шаг) до отправки: новая заявка, черновик, доработка Любой инициатор право по статусу заявки (форма редактируема) Только Организация рабочего места forms/WorkplaceSetup/WorkplaceSetupForm.tsx (canReplaceRow) + useMatrixEditor.replace
Заполнять «Необходимое ПО», «Доступы» и «Мебель» на своём шаге согласования Первый шаг маршрута согласования (по маршруту — непосредственный руководитель) порядок шага в маршруте Организация рабочего места forms/WorkplaceSetup/useApproverRights.ts (canEditReviewFields)
Править оклад на ИС, оклад после ИС, «Отдел/Участок» на своём шаге согласования Начальник расчётной группы (сейчас Ким Анна) должность шага: «начальник/руководитель» + «расчет» Заявка на приём 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. Обновить эту таблицу.

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

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