- json-api-for-spa: адреса приложения уехали в своё пространство /app/, приём стал POST /app/audiorecords, опрос /api/status/:id убран, заведены список, карточка, текст, /app/me и /app/config; имя файла отправителя легло своей колонкой рядом с заголовком - три действия над записью — правка заголовка, возврат в работу и журнал событий — собраны задачей audiorecord-actions - голова очереди: контракт, каркас, экран загрузки, список, действия - в прежних задачах поправлены адреса, рубежи конвейера и остатки Telegram
3.3 KiB
3.3 KiB
✨ Пускать скрипты в API по личным токенам
- Тип: feature
- Категория: Очередь — Второй способ представиться ставится на готовые владельца и контракт, иначе форма ошибки переписывается дважды.
- Зачем: Вход через OIDC закрывает API целиком, а скрипту браузерная сессия недоступна: автоматизировать загрузку станет нечем.
Запрос без токена не проходит, а скрипт ходит в API по токену, выпущенному пользователем, и видит ровно его записи.
Токен принадлежит учётной записи и даёт ровно её права: записи, заведённые по токену, видны владельцу в приложении, и наоборот.
Затрагивает
- заголовок авторизации у всех адресов приложения
/app/; - таблица токенов: владелец, имя, отпечаток, время выпуска и последнего обращения, и её миграция;
- адреса выпуска, перечня и отзыва токена —
/app/me/tokens; docs/security.md— второй способ представиться и хранение отпечатка;README.md— пример вызова API скриптом.
Критерии приёмки
- Запрос с годным токеном заводит задачу от имени его владельца. Оракул — тест API: задача в репозитории с владельцем токена.
- Запрос без токена и с отозванным токеном получает
401и задачи не заводит. Оракул — тест на трёх случаях: нет заголовка, чужая строка, отозванный токен. - Полное значение токена показывается один раз при выпуске, в базе лежит только отпечаток. Оракул — тест: повторное чтение токена отдаёт имя и отпечаток, значение отсутствует, плюс поиск значения по логу пуст.
- Токен не попадает ни в журнал, ни в текст ошибки. Оракул — тест приёма с токеном: в перехваченном журнале значения нет.
Рамки
Учётные записи по-прежнему заводит Authelia — свою регистрацию не делаем.
Сроков жизни и областей действия у токена не заводим: он даёт права владельца
целиком. Берётся после oidc-login: до неё представляться некому. Экрана выпуска здесь
нет — приложения ещё не существует, токен выпускается запросом к API; место
токена на экране настроек заводит settings-screen.