Refactor permissions
Политика доступа к проектам и задачам
Сейчас доступы к задачам проекта реализованы следующим образом: юзер всегда видит проект и задачу, если он уже трекал задачу этого проекта(даже если ни одна из задач больше не заасигнена на него)/на него заасигнена одна из задач проекта.
В первом случае юзер получает перманентный доступ к проекту и задачам, с которыми он работал.
Предлагаю сделать следующее:
Добавить к проекту поле members с возможностью добавлять/удалять участников.
Управление ролями проекта перенести из свойств пользователя в проект.
В итоге получаем:
На странице управления проектом три поля с ролями:
- Менеджер - управление всеми тасками проекта
- Аудитор - просмотр всех тасок проекта
- Юзер - просмотр только заасигненных тасок
При удалении юзера из проекта он теряет возможность к просмотру проекта/задач проекта. (Просмотр затреканного времени в отчетах остается)
Описание пермишенов
Проекты
Админ: просмотр/создание/редактирование/удаление любых проектов
Менеджер: просмотр/создание/редактирование/удаление любых проектов
Аудитор: просмотр любых проектов
Юзер проекта: просмотр проектов, в которых он состоит
Аудитор проекта: просмотр проектов, в которых он состоит
Менеджер проекта: просмотр/редактирование/удаление проектов, в которых он состоит
Задачи
Админ: просмотр/создание/редактирование/удаление любых задач
Менеджер: просмотр/создание/редактирование/удаление любых задач
Аудитор: просмотр любых задач
Юзер проекта: просмотр своих задач в проектах, в которых он состоит
Аудитор проекта: просмотр любых задач в проектах, в которых он состоит
Менеджер проекта: просмотр/редактирование/удаление задач в проектах, в которых он состоит
Пользователи
Админ: просмотр/создание/редактирование/удаление любых пользователей
Менеджер: просмотр любых пользователей
Аудитор: просмотр любых пользователей
Юзер проекта: просмотр только себя
Аудитор проекта: просмотр любых пользователей проекта
Менеджер проекта: просмотр любых пользователей проекта
Временные интервалы
Админ: просмотр/создание/редактирование/удаление у любых пользователей
Менеджер: полный доступ к своим интервалам, просмотр у любых пользователей
Аудитор: полный доступ к своим интервалам, просмотр любых пользователей
Юзер проекта: полный доступ к своим интервалам
Аудитор проекта: полный доступ к своим интервалам, просмотр интервалов участников проекта
Менеджер проекта: полный доступ к своим интервалам, просмотр интервалов участников проекта