Resolve "Refactor permissions"
Closes #40 (closed)
Related merge request: https://git.amazingcat.net/AmazingTime/core/cattr-frontend/-/merge_requests/77
Добавлено
- Policy. Для каждой сущности определены политики доступа, определяющие может ли пользовать выполнять операции над выбранными сущностями.
- Request form. Убран middleware RoleCheck, теперь доступ к каждому эндпоинту определяется в отдельных в реквест классах. Таким образом избавились от сложностей поддержки прав, хранящихся в бд, также валидация запросов вынесена из контроллеров.
- Scope. Теперь область видимости сущностей ограничена для пользователей, не имеющих полного доступа. Например: пользователь c ролью user, участвующий в проекте X, выполняющий запрос Project::all(), Task::all() и тд, получит только проект X и все задачи этого проекта, которые заасигнены на него.
- Участники проекта. Раньше пользователь автоматически получал доступ в проект, если на него заасигнена одна из задач или он имеет интервалы, затреканные в этот проект. Возможности контролировать доступ к проектам не было. Добавлена страница проекта Members, для управления пользователями. Мы можем добавить/убрать пользователей из проекта, а также назначить роль. При удалении пользователя из проекта он теряет доступ ко всем задачам, пользователям и к остальным, связанным с с ним сущностям, проекта. Это добавляет некоторые дополнительные телодвижения и всех пользователей теперь необходимо менеджить руками
Исправлено
- Если пользователь имеет роль user на проекте X и роль auditor/manager на проекте Y, то при просмотре отчета на Дашборде, в Time use report и Project Report, просмотр проекта, юзер видел всю активность участников проекта X
Edited by Vitaliy Pavkin