Синхронизация прав доступа
Бизнес-требования
Необходимо настроить выдачу прав на проектные формы ввода данных на уровне доступов к потокам.
- Права выдаются сразу на все проекты в потоке.
- При изменении прав в проекте необходимо отправлять в DIS запрос на сохранение прав пользователя к таблицам проекта.
- При переходе в DIS отдаются логин и хэшированный пароль пользователя.
Решение
Интерфейс
Расположение:
Менеджер проектов → Поток → Вкладка "Доступы"
Добавляется новый раздел с доступами в таблице:
- Название раздела – "Работа с формами ввода"
- Раздел содержит в себе 3 столбца с чекбоксами:
- Просмотреть форму ввода
- Ввести данные в форму ввода
- Редактировать форму ввода
Добавляется новый раздел в модальном окне добавления прав доступа:
- Название раздела – "Работа с формами ввода"
- Раздел содержит в себе 3 чекбокса:
- Просмотреть форму ввода
- Ввести данные в форму ввода
- Редактировать форму ввода
Пользовательская логика
Аналогична выбору любых других прав доступа
Системная логика (фронтенд)
Системная логика (бэкенд)
Требуется обновить все запросы на права, добавить в них 3 группы прав:
- "read_form" для "Просмотреть форму ввода"
- "write_form" для "Ввести данные в форму ввода"
- "change_form" для "Редактировать форму ввода"
При получении запроса с указанными группами прав:
- Вызывать функцию на создание hash-паролей – см. тут
- Выполнять запрос POST {передать данные в DIS для создания там нового пространства для проекта и его системной таблицы} – см. тут
- Данные для запросов собираются следующим образом:
- В массив id проектов попадают все id проектов в потоке, к которому настраиваются права доступа
- В массив id пользователей входят пользователи, которым открывается доступ (в т.ч. пользователи в группах, которым открывается доступ)
- Роли берутся из запроса
