ADR 0012: самостоятельная смена пароля учётной записи
Статус: accepted. Дата: 2026-09-23.
Контекст
Учётные записи создаёт администратор, который также может сбросить пароль. Пользователю нужен способ сменить выданный пароль без передачи нового пароля администратору.
Решение
POST /api/v1/auth/passwordдоступен только аутентифицированной пользовательской сессии. Запрос содержитcurrentPasswordиnewPassword, оба проходят действующую проверку длины.- Адаптер блокирует строку пользователя в транзакции, проверяет текущий пароль через scrypt и сравнение постоянного времени, записывает новый хеш с новой случайной солью и удаляет все сессии пользователя в той же транзакции. Ошибка текущего пароля возвращает
unauthorizedи не меняет данные. - Операция использует ограниченный допуск проверки паролей API. После ответа
204клиент удаляет свой токен и предлагает войти заново. Сервисный ключ не может вызвать этот сценарий; административный сброс остаётся отдельной операцией.
Последствия
Миграция БД не требуется. Все действующие устройства пользователя теряют доступ при смене пароля. Уже начатые запросы не прерываются автоматически; следующая проверка сессии их не пропустит. Консоль не сохраняет пароль и токен в браузерном хранилище.
Уточнение 2026-10-01: смена пароля доступна только интерактивной сессии (не персональному токену) и в той же транзакции отзывает все персональные токены; неверный текущий пароль учитывается в backoff учётной записи. См. ADR 0049.