Перейти к содержанию

Права доступа к задачам — Бизнес-логика

Источники: пространство «Общая база знаний» TaskID , ; сверка с кодом

1. Общий принцип

Пользователь получает доступ на просмотр задачи, если соответствует хотя бы одному требованию:

  1. Доступ на категорию
  2. Доступ на задачу (по роли)
  3. Смарт-доступ
  4. Доступ по SQL View
  5. Акцептант активной подписи
  6. Заместитель сотрудника с одним из указанных прав

Исключение: конфиденциальные задачи — доступ имеют только подписчики, прочие уровни не учитываются.


2. Доступ на категорию

Права выдаются группе пользователей на уровне категории.

Если пользователь входит в несколько групп — права суммируются (учитываются все активные права).

Виды прав группы на категорию

Право Описание
Администратор задач/категории Изменение любых параметров: заказчик, исполнитель, сроки, текст, подписи, статус вопреки маршруту. Право разрывать связи между задачами (если задачи в разных категориях — право нужно хотя бы в одной). Единственное право, открывающее кнопку «Удалить» в контекстном меню грида и карточки задачи
Просмотр всех задач Видеть все задачи в категории
Создавать задачи Создание объектов (пользователь выступает как Заказчик)
Исполнять Принятие задач к исполнению
Редактировать исполнителей Редактирование параметра «Исполнители»
Менять заказчика Смена заказчика задачи
Переносить срок Редактирование «Срок исполнения»
Добавлять и менять акцептантов Добавление акцептантов к запрошенной подписи, делегирование
Пакетная обработка Пакетные операции над задачами
Просмотр зашифрованных задач Доступ к тексту и ДП в зашифрованных задачах (иначе — «текст задачи скрыт»)
Видеть скрытую оценку исполнителей Доступ к оценке при режиме «Закрытая оценка»
Запретить экспортировать в Excel Запрет выгрузки данных по категории

Где настраивается

  • Настройки категории → вкладка «Доступ» — назначение групп с правами
  • Управление группами → вкладка «Права на категорию» — обратная навигация

3. Доступ на задачу (по роли)

Для отдельной задачи права определяются ролью пользователя в ней:

  • Заказчик
  • Исполнитель
  • Подписчик
  • Руководитель исполнителя
  • Руководитель заказчика

Назначение ролей происходит в пользовательском интерфейсе задачи.


4. Доступ акцептанта

Акцептант получает право на просмотр задачи в период, когда подпись запрошена, но ещё не обработана (статус «На подписи»).

Два сценария после обработки подписи: - Настройка «Добавлять в подписчики акцептанта» включена → акцептант становится подписчиком, доступ сохраняется - Настройка выключена → акцептант теряет доступ после подписания/отклонения


5. Доступ заместителя

Заместитель получает доступ ко всем задачам принципала, за исключением:

  • Конфиденциальных задач — заместитель НЕ получает доступ к конфиденциальным задачам принципала
  • Категорий с ограничением в дополнительных настройках замещения (по умолчанию режим «Кроме категорий» — недоступны чаты и приватные задачи в категориях с конфиденциальностью/шифрованием)
  • Зашифрованных задач, к которым у заместителя нет собственного доступа
  • Чатов принципала, к которым у заместителя нет доступа

6. Смарт-доступ

Смарт-доступ предоставляет права на отдельные задачи в зависимости от условий, определённых смарт-выражением.

Смарт-выражение возвращает список UserID, которым предоставляется доступ к задаче.


7. Доступ по SQL View

Настройка на уровне категории. Указанная SQL View должна возвращать таблицу с колонками TaskID, UserID. Каждая строка означает доступ на чтение пользователя UserID к задаче TaskID.

Важно: права доступа на категорию имеют больший вес. Если у пользователя нет доступа к категории, а SQL View доступ предоставлен — доступ не действует.


8. Гибкая настройка прав через ДП

Механизм предоставления доступа к задачам через ДП «Выбор пользователя» — с поддержкой цепочек через Lookup-поля.

Режим 1: Flat

В категории есть ДП «Выбор пользователя». Пользователь, добавленный в этот ДП, получает доступ к задаче.

Пример: ДП «РП (Руководитель проекта)» и «СДО» в категориях договоров — пользователи из этих ДП получают доступ к задачам.

Режим 2: Lookup

В категории A есть ДП «Lookup поле» на категорию B. В категории B есть ДП «Выбор пользователя». Пользователи из ДП категории B получают доступ к задаче категории A.

Пример: категория «Backlog проектных задач» → Lookup на «Модули ТМ» → ДП «Акцептант» типа «Выбор пользователей» → доступ к задачам Backlog.

Режим 3: Doublelookup

Цепочка из трёх категорий:

  1. Категория A — ДП «Lookup поле» на категорию B
  2. Категория B — ДП «Сквозной», обращается к категории C по Lookup-полю из той же категории B
  3. Категория C — ДП «Выбор пользователей» → доступ к задаче категории A

Пример: «Проекты» → Lookup «Договор» → «Договоры» → Сквозной «КМ» по Lookup «Клиент» → «Клиенты» → ДП «Клиентский менеджер» → доступ к проектам.

Режим 4: Multilookup

В категории A есть ДП «Выбор нескольких задач из категории» на категорию B. В B есть ДП «Выбор пользователя» → доступ к задаче категории A.

Пример: категории разработки (Backlog, Backlog несоответствия, Backlog ошибки) → ДП «Компании» (Выбор нескольких задач) → «Клиенты» → ДП «КМ» → доступ к задачам.

Важное ограничение

Настройка гибких прав производится по конкретным ID ДП и категорий. Если ДП распределяет доступ в одной категории, это не распространяется на другие категории, где этот ДП также присутствует.


9. Конфиденциальные задачи

При включённом режиме «Конфиденциально» на задаче — доступ имеют только подписчики. Все остальные уровни доступа (категория, роль, смарт-доступ, SQL View) не работают.

Матрица взаимодействия конфиденциальности и шифрования с замещением / перевоплощением:

Механизм Замещение Перевоплощение (сисадмин)
Конфиденциальность Доступ запрещён Доступ есть (by design)
Шифрование Доступ запрещён Доступ запрещён (текст/комментарии/файлы скрыты)
Конфиденциальность + Шифрование Доступ запрещён Доступ запрещён

Для максимальной защиты (включая защиты от перевоплощения) необходимо включать шифрование. Конфиденциальность ограничивает подписку и замещение, но не блокирует перевоплощение.

Что именно скрыто при перевоплощении + шифрование (с 2.267.353)

При перевоплощении в пользователя, не имеющего право «Просмотр зашифрованных задач»:

  • Зашифрованные ДП на МТФ — отображаются как пустые / скрытые
  • Текст задачи в гриде — не показывается
  • Файлы зашифрованной задачи — недоступны для скачивания/просмотра
  • Комментарии — текст зашифрованных комментариев скрыт

Ранее существовал баг: МТФ передавал null вместо oldSessionUserId, что позволяло обойти проверку шифрования при перевоплощении. Исправлено в 103 файлах (backend + frontend).


10. Матрица доступа к ДП

Помимо доступа к самой задаче, существует матрица доступа к ДП — управление видимостью и редактируемостью отдельных дополнительных параметров:

  • По роли пользователя (заказчик / исполнитель / подписчик / группа)
  • По статусу задачи
  • Гранулярность: чтение / редактирование / скрыт

Настраивается на уровне категории. Подробнее — в домене ext-params.


11. Устаревшие механизмы

  • Доступ по тегам — deprecated