1.9 KiB
1.9 KiB
Аккаунты, токены и SPA
Поверх тайлового пайплайна: Яндекс OAuth, персональные стили/URL, учёт запросов, Vite-кабинет на том же origin.
Данные
- EF Core SQLite, файл
/data/app.db(IDataPaths.AppDatabase). - Таблицы:
Users,ApiTokens(только SHA-256 hash + prefixts_...),UserStyles,UsageDaily. - Миграция
InitialAccounts,Database.Migrate()на старте.
Auth
GET /api/v1/auth/yandex/start→ 302 на oauth.yandex.ru.- SPA ловит
?code=&state=на/,POST /api/v1/auth/yandex. - Cookie
ts_sessionHttpOnly, SameSite=Lax, Secure=SameAsRequest. - Кабинет: cookie. Выдача тайлов/стилей:
?token=илиAuthorization: Bearer. - Секрет Яндекса только в env:
TileServer__Yandex__ClientId|ClientSecret|RedirectUri. Не коммитить.
Выдача и usage
/u/{slug}/tiles/{source}/{z}/{x}/{y}.pbf?token=/u/{slug}/tiles/{source}.json?token=/u/{slug}/styles/{name}?source=&token=- Счётчик в
ConcurrentDictionary, flush каждые 5 с вUsageDaily. - Публичные
/api/v1/tilesи/api/v1/stylesбез счётчика.
Стили
- Клон пресета:
POST /api/v1/me/styles. - Bind персонального стиля:
tiles[0]=/u/{slug}/tiles/{source}/...pbf?token=. - Свои имена перекрывают пресеты.
Фронт и деплой
web/: Vite + React + styled-components, тема HUD (#e8923d).- Docker: stage
node:22→wwwroot/app./— SPA,/demo— старое Razor-демо. - Compose:
YANDEX_CLIENT_ID/YANDEX_CLIENT_SECRETс хоста.
Тесты
26 unit-тестов: hash/verify/revoked, slug, bind /u/{slug}/ + token, батч usage.