Права доступа к задачам — Бизнес-логика¶
Источники: пространство «Общая база знаний» TaskID , ; сверка с кодом
1. Общий принцип¶
Пользователь получает доступ на просмотр задачи, если соответствует хотя бы одному требованию:
- Доступ на категорию
- Доступ на задачу (по роли)
- Смарт-доступ
- Доступ по SQL View
- Акцептант активной подписи
- Заместитель сотрудника с одним из указанных прав
Исключение: конфиденциальные задачи — доступ имеют только подписчики, прочие уровни не учитываются.
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¶
Цепочка из трёх категорий:
- Категория A — ДП «Lookup поле» на категорию B
- Категория B — ДП «Сквозной», обращается к категории C по Lookup-полю из той же категории B
- Категория 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