Вызов формы ввода (чтение/ввод/редактирование) из проекта
Бизнес-требования
Формы ввода должны вызываться из источника, который создан в DIS
В настройках источника доступны 3 кнопки для перехода:
- Просмотреть формы ввода
- Ввести данные
- Редактировать форму ввода
Про выдачу доступов на эти права см. отдельное ТЗ
При нажатии на кнопку выполняется редирект в пространство DIS только для этого проекта:
- Посмотреть – с правами зрителя
- Записать – с правами редактора данных
- Редактировать – с правами редактора форм
Fastboard при этом передаёт:
- Учетные данные пользователя
- Запрошенные права доступа
- Специальный хэш-пароль для валидации запрошенных прав
Про правила формирования и хранения этих данных см. отдельное ТЗ
Решение
Добавить переход в DIS в диспетчере данных. Осуществлять переход в зависимости от прав доступа.
Интерфейс
Расположение (только у источников-DIS):
Проект → Диспетчер данных (скрипт загрузки) → Контекстное меню источника (⋮) → После кнопки "Изменить параметры"
Добавляются 3 новые кнопки (с иконками):
- Просмотреть форму ввода
- Ввести данные в форму ввода
- Редактировать форму ввода
Пользовательская логика
При нажатии на кнопки выполняется переход по привязанной ссылке (на указанную форму ввода с выбранными правами)
Системная логика (Фронтенд)
При нажатии на любую кнопку выполняется редирект по ссылке link источника, в контекстном меню которого нажата кнопка. Перед этим:
- Выполняется запрос в API Fastboard – GET api/v3/dis/user/{userId}/hash-pass, в котором передаются:
- userId пользователя
- projectId проекта, из которого выполняется переход
- role – в зависимости от кнопки, которая была нажата:
- "read" для "Просмотреть форму ввода"
- "write" для "Ввести данные в форму ввода"
- "change" для "Редактировать форму ввода"
- В ответ на запрос приходит или hash-пароль, или ошибка доступа
- В случае ошибки показывать системное сообщение с ошибкой с бэкенда
- В случае успеха выполняется запрос в API DIS – POST, в котором передаются:
- login пользователя
- hash-пароль с бэкенда
- role – в зависимости от кнопки, которая была нажата:
- "read" для "Просмотреть форму ввода"
- "write" для "Ввести данные в форму ввода"
- "change" для "Редактировать форму ввода"
- projectId проекта, из которого выполняется переход
- sourceId источника, из которого нажата кнопка
- Если в ответ приходит ошибка, то показывать системное сообщение с ошибкой из DIS
Системная логика (Бэкенд)
Новые API-вызовы:
- GET api/v3/dis/user/{userId}/hash-pass – получить хэш-пароль указанного пользователя для указанного доступа к указанному источнику в DIS.
- В запросе приходит:
- userId пользователя
- projectId проекта, из которого выполняется переход
- role – в зависимости от кнопки, которая была нажата:
- "read" для "Просмотреть форму ввода"
- "write" для "Ввести данные в форму ввода"
- "change" для "Редактировать форму ввода"
- В ответ отправляется hash-пароль из БД по сочетанию userId-projectId-role
- Если пароля нет, то в ответ уходит ошибка прав доступа
- В запросе приходит:
- POST – передать в DIS креды для доступа пользователя:
- В запросе уходит:
- login пользователя
- hash-пароль по сочетанию userId-projectId-role
- role – в зависимости от кнопки, которая была нажата:
- "read" для "Просмотреть форму ввода"
- "write" для "Ввести данные в форму ввода"
- "change" для "Редактировать форму ввода"
- projectId проекта, из которого выполняется переход
- sourceId источника, из которого нажата кнопка
- В ответ запрос ничего не ожидает
- В запросе уходит:
