2.2 KiB
Authentication
User flow
Пользователь регистрируется или входит по email и паролю. Регистрация сразу создаёт первую сессию. Email сохраняется в нормализованном виде; пароль должен содержать от 12 до 72 UTF-8 байтов.
Access token живёт 15 минут только в памяти браузера. Refresh token живёт 7 дней в cookie refresh_token с httpOnly и SameSite=Lax; при восстановлении сессии он заменяется. После перезагрузки приложение восстанавливает access token через refresh-cookie до показа защищённых маршрутов.
Все маршруты, кроме /login и /register, требуют сессию. После входа пользователь возвращается на исходный внутренний маршрут, если он был. Logout доступен в настройках, очищает локальную сессию независимо от состояния сети и отзывает серверную сессию при доступном refresh-cookie.
API
POST /api/v1/auth/register, POST /api/v1/auth/login и POST /api/v1/auth/refresh возвращают профиль и access token. POST /api/v1/auth/logout отвечает 204. GET /api/v1/auth/me требует Bearer access token.
Ошибки API имеют application/problem+json с полями status и code. Ошибки валидации содержат errors с JSON Pointer полей.
Limitations
MVP не включает подтверждение email, восстановление или смену пароля, смену email, удаление аккаунта, список устройств, logout всех устройств или rate limit попыток входа. Access token может оставаться действительным до 15 минут после logout. Параллельный refresh между независимыми API-клиентами не поддерживается.