точки входа переехали в cmd/, заведена заглушка OIDC для локального входа

- main.go и journal_route_test.go переехали в cmd/transcriber без правок
  содержимого; образ собирает ./cmd/transcriber поимённо
- cmd/oidcstub отвечает на /authorize, /token и /userinfo, проверок не делает
  и слушает петлевой адрес: войти без Authelia стало чем
- ступень сборки приложения переехала на node:24 с alpine — musl ждёт ответа
  на AAAA, которого нет, и npm ci висел вместо отказа
This commit is contained in:
av
2026-08-15 20:15:57 +03:00
parent 63a13404df
commit 91138dd39a
19 changed files with 335 additions and 25 deletions
+14
View File
@@ -169,6 +169,20 @@ pb_data/storage/<коллекция>/<запись>/<имя>_<10 случайн
**Куки библиотека не читает вовсе** — сессию берёт только заголовком
`Authorization` (`apis/middlewares.go`, `getAuthTokenFromRequest`).
**Учётную запись обмен ищет двумя способами подряд, а связь с провайдером
уникальна.** Сперва — по неизменяемому признаку провайдера, а не найдя — по
адресу почты (`apis/record_auth_with_oauth2.go`, ветка `case authUser.Email !=
""``FindAuthRecordByEmail`). Найденной записи он пытается добавить связь, а на
ней стоит уникальный индекс
`idx_externalAuths_record_provider (collectionRef, recordRef, provider)`. Отсюда
исход, обратный ожидаемому: два разных признака провайдера с **одной** почтой не
сливаются в одного владельца молча — второй вход отвергается, обмен отдаёт `400`,
сервис — `401` со строкой `Failed to exchange provider code`, а настоящая причина
остаётся в журнале хранилища строкой `failed to save linked rel: … Value must be
unique`. Дописано 2026-08-15 задачей про заглушку OIDC; получено прогоном против
временного каталога — чтение исходников давало ту же цепочку, но противоположную
развязку.
**Журнал запросов пишет строку запроса целиком.** `activityLogger` на корневом
роутере кладёт `RequestURI` полем `url` в таблицу `_logs`, ретеншен по умолчанию
`MaxDays: 5`. Значит всё, что пришло параметром адреса, оседает там на пять