Skip to main content

Синхронизация с DIS: создание, удаление, обновление, сохранение данных

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

От Fastboard:

  • При создании/копировании/перемещении проекта отправляем запрос в DIS на создание там источника (области + main таблицы для проекта)
  • Создаем автоматически источник в FB, связанный с этой пустой таблицей в DIS
  • У таких источников будет новый параметр link с урлом таблицы в DIS
  • Отправляем запрос на все права для пользователя-создателя проекта, а также всех админов в системе
  • При отправке запроса на все права на бэке хэшируем связку из пароля пользователя и его прав доступа, хэш передаем в DIS
  • При удалении также не забываем отправить запрос на удаление в DIS
  • При входе в диспетчер данных отдавать список не только источников, доступных пользователю, но и источников из DIS для данного проекта
  • При создании новых пользователей в FB отправлять данные о пользователях в DIS
  • В своих черновиках у пользователей автоматически есть все 3 роли для доступа

От DIS:

  • На каждый проект в FB создается пространство с как минимум одной системной таблицей
  • Таблица становится источником этого проекта. Остальные таблицы, созданные в этом пространстве, автоматически становятся источниками этого проекта
  • FB отдает данные пользователей, имеющих доступ к формам ввода. Необходимо сохранять эти данные и проверять доступность по этим данным при попытке пользователя получить доступ к форме ввода
  • При получении информации о создании нового пользователя в FB заводить ему учетку в DIS с новым уровнем доступа – Fastboard
  • При входе пользователя с учеткой Fastboard обязательно должны быть получены:
    • Роль пользователя (текущая)
    • Хэш-пароль для подтверждения доступа и роли

Примерная структура таблицы-связки пользователей с таблицами в DIS:

  • id пользователя
  • id таблицы
  • Роль пользователя
  • Хэш-пароль для входа этого пользователя в эту таблицу с этой ролью

Решение

Синхронизация создания, изменения и удаления данных пользователей и проектов в Fastboard с системой DIS по API с использованием хэширования для повышения безопасности.

 

Создание новых пользователей

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

  • При создании нового пользователя в системе выполнять запрос в API DIS – POST, который передаёт в себе:
    • Логин созданного пользователя

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

  • Новый запрос POST – передать данные в DIS для создания там нового пользователя. В запросе передаётся:
    • Логин созданного пользователя
  • Обязательно должна выполняться проверка на роль пользователя – вызывать такой запрос может только пользователь с ролью "Администратор системы" или "Администратор тенанта"

 

Создание/копирование проектов

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

  • При создании или копировании проекта в системе выполнять запрос в API DIS – POST, который передаёт в себе:
    • id проекта (нового или копии)
    • id создателя (пользователя)
    • Массив hash-паролей для пользователя для ролей:
      • Просмотреть форму ввода
      • Ввести данные в форму ввода
      • Редактировать форму ввода
    • Список id всех пользователей-администраторов системы и администраторов тенанта, в котором создается/копируется этот проект
      • Для этого выполняется запрос на бэкенд для получения списка пользователей с указанными ролями
    • Массив массивов hash-паролей для всех админов для ролей:
      • Просмотреть форму ввода
      • Ввести данные в форму ввода
      • Редактировать форму ввода

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

  • Новый запрос POST – передать данные в DIS для создания там нового пространства для проекта и его системной таблицы.
    • В запросе передаётся:
      • id проекта (нового или копии)
      • id создателя (пользователя)
      • Массив hash-паролей (создаётся) для пользователя для ролей:
        • Просмотреть форму ввода
        • Ввести данные в форму ввода
        • Редактировать форму ввода
      • Список id всех пользователей-администраторов системы и администраторов тенанта, в котором создается/копируется этот проект
      • Массив массивов hash-паролей (создаётся) для всех админов для ролей:
        • Просмотреть форму ввода
        • Ввести данные в форму ввода
        • Редактировать форму ввода
    • В ответ приходит массив с данными для подключения источника:
      • Название = "DIS_{Название проекта}"
      • СУБД
      • Хост
      • Порт
      • База данных
        • Логин и пароль равны логину и hash-паролю уровня "Редактировать форму ввода" пользователя-создателя
  • Обязательно должна выполняться проверка на роль пользователя – вызывать такой запрос может только пользователь с возможностью создавать проекты (аналитик/разработчик/любой админ)

 

Создание hash-паролей

 

Удаление проектов