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