Skip to main content

Синхронизация прав доступа

Бизнес-требования

Необходимо настроить выдачу прав на проектные формы ввода данных на уровне доступов к потокам.

image.png

  • Права выдаются сразу на все проекты в потоке.

  • При изменении прав в проекте необходимо отправлять в DIS запрос на сохранение прав пользователя к таблицам проекта.

  • При переходе в DIS отдаются логин и хэшированный пароль пользователя.

Решение

Интерфейс

Расположение:
Менеджер проектов → Поток → Вкладка "Доступы"

Добавляется новый раздел с доступами в таблице:

  • Название раздела – "Работа с формами ввода"
  • Раздел содержит в себе 3 столбца с чекбоксами:
    • Просмотреть форму ввода
    • Ввести данные в форму ввода
    • Редактировать форму ввода

Добавляется новый раздел в модальном окне добавления прав доступа:

  • Название раздела – "Работа с формами ввода"
  • Раздел содержит в себе 3 чекбокса:
    • Просмотреть форму ввода
    • Ввести данные в форму ввода
    • Редактировать форму ввода

Пользовательская логика

Аналогична выбору любых других прав доступа

Системная логика (фронтенд)

 

Системная логика (бэкенд)

Требуется обновить все запросы на права, добавить в них 3 группы прав:

  • "read_form" для "Просмотреть форму ввода" 
  • "write_form" для "Ввести данные в форму ввода"
  • "change_form" для "Редактировать форму ввода"

При получении запроса с указанными группами прав:

  • Вызывать функцию на создание hash-паролей – см. тут
  • Выполнять запрос POST {передать данные в DIS для создания там нового пространства для проекта и его системной таблицы} – см. тут
  • Данные для запросов собираются следующим образом:
    • В массив id проектов попадают все id проектов в потоке, к которому настраиваются права доступа
    • В массив id пользователей входят пользователи, которым открывается доступ (в т.ч. пользователи в группах, которым открывается доступ)
    • Роли берутся из запроса