Управление правами осуществляется на основании ролей. В роли прописаны права на действия. Каждое право либо дано, либо нет.
Стоит сделать вектор (массив) объектов прав (то, на что устанавливаем права) и по этому образцу задавать права у ролей.
Права считаются независимыми друг от друга (т.е. при установке права не проверяется, есть или нет какие-то другие права).
Каждый пользователь может иметь несколько ролей. Права пользователя определяются объединением прав ролей, т.е. операцией .or. над векторами прав.
Каждое действие совершается, если у пользователя есть права хоть по одному основанию (особенности при движении, чтобы результат не вызвал противоречия с другими правами).
2 Инцидент (задача)
Права на инциденты устанавливаются в общих терминах, т.е. невозможно установить права на отдельный инцидент, права на него вычисляются по его свойствам (исполнитель, состояние и т.д.).
Для инцидента (за исключением права на создание) различаются права в разных есго отношениях с инцидентом:
Часть действий (критически важные) сопровождаются служебными комментариями со стандартным текстом.
2.1 Создание инцидента
Да/нет
2.2 Просмотр инцидента
2.3 Передача инцидента
2.4 Комментирование
2.5 Редактирование текста инцидента
Существенная особенность: редактирование текста инцидента не-Исполнителем возможно только в неактивном состоянии.
2.6 Изменение приоритета инцидента
2.7 Редактирование тегов инцидента
Назначение/удаление тегов у инцидента. Считаем теги, так же как и приоритет, не критичными для сохранения истории, поэтому не разделяем операции назначения и удаления тегов.
2.8 Выбор рамочной задачи
Действие представляет собой ситуацию {номер рамочной задачи пуст} => {номер рамочной задачи непуст}.
2.9 Очистка рамочной задачи
Действие представляет собой ситуацию {номер рамочной задачи непуст} => {номер рамочной задачи пуст}.
2.10 Изменение рамочной задачи
Действие представляет собой ситуацию {номер рамочной задачи непуст} => {номер рамочной задачи непуст и не совпадает с начальным}.
2.11 Прицепление файла
Действие представляет собой добавление нового файла из ЭА.
2.12 Отцепление файла
3 Состояние
Важное отличие прав на состояние от прав на инциденты состоит в том, что права на инциденты устанавливаются как по их свойствам, так и индивидуально.
3.1 Просмотр инцидентов в состоянии
Просмотр инцидентов, находящихся в определенном состоянии. Если у пользователя права на состояние нет, но право на инцидент есть (к примеру, как у Владельца), то действуют более широкие права, т.е. доступ к инциденту есть.
3.2 Быть исполнителем в состоянии
Показывает то, что данный исполнитель может быть исполнителем для инцидентов в данном состоянии.
4 Переход
Право на переход означает, что данный пользователь имеет право сделать данный переход задачи. При этом не важно, имеет ли он право на конечное состояние этого перехода — для совершения перехода пользователь должен иметь право на просмотр инцидента (иначе он его просто не откроет), право на передачу инцидента (иначе ему просто не должна быть доступна кнопка движения инфцидента) и право на конкретный переход (к примеру, пользователь может выполнить задачу и передать на тестирование, но у него не будет права на смену исполнителя).
Желательно чтобы программа имела минимальный интеллект и вычисляла, может ли пользователь совершить хоть один переход (к примеру, у него права на переход без смены исполнителя, а в списке возможных исполнителей конечного состояния его нет).
4.1 Переход без доп.условий
4.2 Переход в ситуации «я — Исполнитель»
Действие представляет собой ситуацию {задача в состоянии А, исполнитель Иванов} => {задача в состоянии Б (возможно Б=А), исполнитель Иванов}, т.е. некий переход вообще может быть недоступен, но доступен для пользователя, если он является текущим Исполнителем инцидента. При таком движении исполнитель не изменяется. Если данного пользователя нет в списке возможных исполнителей конечного состояния перехода, то такой переход не должен быть доступен вне зависимости от этого права.
4.3 Переход в ситуации «я — Владелец»
Это возможность Владельцу дать права на движения его инцидентов.
5 Прочие права
Прочие права должны описывать доступ к следующим объектам:
Доступ к файлам управляется на уровне прав электронного архива.
Все это будет описано в отдельном документе.
Комментариев нет:
Отправить комментарий