Кадровые, зарплатные и инцидентные задачи обычно живут в отдельном секретном проекте, потому что больше их спрятать негде. В Quevell это не нужно: доступ сужается до одной задачи, не трогая работу остальных.
Уровень безопасности
Уровень безопасности это именованный список тех, кого он пускает. Он создается в проекте и принадлежит проекту.
Задача либо стоит за уровнем, либо не стоит ни за каким. Задача без уровня видна всем, кто видит проект, ровно как обычно.
Только сужает
Главное правило одно: уровень безопасности только сужает права проекта и никогда их не расширяет.
Пользователь, который не видит проект, не увидит задачу в нем ни при каком уровне, даже если уровень называет его лично. Уровень отвечает на вопрос «кто из тех, кто и так мог бы видеть эту задачу, ее увидит», и ни на какой другой.
Отсюда следует то, ради чего это устроено так: ошибка в настройке уровня не может показать задачу тому, кому проект ее не показал бы. Ошибиться можно только в сторону меньшей видимости.
Кого пускает уровень
В списке уровня бывают три вида записей:
| Вид | Кого пускает |
|---|---|
| Пользователь | одного названного пользователя |
| Группа | всех, кто состоит в группе, и никого больше |
| Роль в проекте | всех, кто держит эту роль в проекте задачи |
Группы появились здесь не для удобства. Уровень, перечисляющий пользователей поименно, устаревает в тот день, когда кто-то приходит или уходит из команды, для которой его писали; уровень, названный группой, остается верным.
Роль, полученная через группу, засчитывается: если группа держит в проекте роль контрибьютора, а уровень пускает контрибьюторов, участники группы проходят.
Администраторы безопасности
Тот, кто держит в проекте право управлять безопасностью задач, видит защищенные задачи этого проекта всегда, независимо от списка.
Это сделано намеренно, и вот зачем: пустой список означает «только администраторы», а не «никто». Уровень, из которого случайно удалили последнюю запись, оставляет задачу видимой тем, кто может это починить, вместо того чтобы запирать ее навсегда.
Уровень по умолчанию
Проект может назначить один из своих уровней уровнем по умолчанию: тогда каждая новая задача этого проекта рождается уже за ним. Это для проектов, где защищено все, а не отдельные задачи, и где полагаться на то, что пользователь не забудет поставить уровень руками, не стоит.
Где это действует
Правило видимости у продукта одно, записанное в одном месте, и его применяют все пути чтения, которые могут показать задачу: поиск по проекту, глобальный поиск, списки, карточки на досках. Отдельного пути, где правило забыли применить, нет по конструкции: иначе один совместимый эндпоинт тихо становился бы дырой.
Практически это значит, что защищенная задача не появляется в результатах поиска у того, кого уровень не пускает, а не появляется с закрытым содержимым. Ее там просто нет.
Сколько задач за уровнем
Рядом с каждым уровнем видно, сколько задач за ним стоит прямо сейчас. Уровень, который не охраняет ничего, так и читается, и это единственный способ заметить, что уровень перестал использоваться, вместо того чтобы гадать.
Что записывается
Создание уровня, изменение его списка и постановка задачи за уровень попадают в журнал изменений с автором и временем. Кто и когда открыл задачу шире, видно там же.