Направление работ: Mobile Код раздела: 5.3.1 Раздел: Профиль > Настройки приложения > Смена пароля и установка/смена код-пароля Статус: Готов Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 13.07.26
1. Назначение
Раздел описывает смену пароля, а также установку, смену и отключение код-пароля из настроек приложения. Смена пароля выполняется в отдельном сценарии с проверкой текущего пароля и последующим повторным входом в аккаунт; для установки или смены нового код-пароля используются шаги ввода и подтверждения кода.
2. Ключевые понятия
Смена пароля — отдельный сценарий профиля, в котором пользователь подтверждает действие, вводит текущий пароль, новый пароль и его повтор, а после успешной смены повторно входит в аккаунт.
Установка код-пароля — шаг регистрации, на котором пользователь вводит и подтверждает новый код-пароль. В рамках раздела 5.3.1 этот же шаг используется для установки или смены код-пароля текущего аккаунта.
3. Scope
Входит
S1: Смена пароля с проверкой текущего пароля и повторным входом в аккаунт
S2: Установка, смена и отключение код-пароля
Не входит
- Правила валидации нового пароля и связанные ошибки — описаны в Mobile 1.2 Регистрация
- Детальный flow шага установки код-пароля — описан в Mobile 1.2.1 Задать код-пароль и биометрию
- Mobile 5.3 Настройки приложения — остальные настройки приложения
4. BR
5. Функциональные требования (UC + FR)
| ID | Cценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR5.3.1-1 | Пользователь выбирает «Изменить пароль» | Интерфейс открывает отдельный экран «Смена пароля», не связанный с регистрационным сценарием, и показывает защищенные поля «Текущий пароль», «Новый пароль» и «Повторите пароль». После заполнения полей пользователь нажимает «Продолжить», и интерфейс отправляет запрос на смену пароля в систему. | 1 | Реализовано \ OQ5.3.1-1 | |
| S1: FR5.3.1-2 | Пользователь переходит к смене пароля | Перед открытием экрана «Смена пароля» интерфейс показывает диалог «Сменить пароль?» с предупреждением «При смене пароля потребуется повторно выполнить вход в аккаунт» и действиями «Отменить» и «Продолжить». При выборе «Отменить» диалог закрывается без перехода; при выборе «Продолжить» интерфейс открывает экран смены пароля. | 1 | Реализовано | |
| S1: FR5.3.1-3 | Система успешно изменила пароль (на будущее, возможно вообще не будет) | Интерфейс показывает уведомление «Пароль успешно изменен», завершает текущую сессию и переводит пользователя в раздел Mobile 1.3 Авторизация > Вход для повторного входа в аккаунт. | 4 | Реализовано \ OQ5.3.1-3, OQ5.3.1-7 | |
| S2: FR5.3.1-4 | Пользователь выбирает «Установить код-пароль» | Интерфейс переводит пользователя на шаг установки код-пароля: пользователь вводит новый четырехзначный код на экране «Придумайте новый пароль», затем повторно вводит его на экране «Повторите пароль». Код-пароль сохраняется только при совпадении введенных значений. | 1 | Реализовано \ OQ5.3.1-2, OQ5.3.1-8 | |
| S2: FR5.3.1-5 | Пользователь выбирает «Изменить код-пароль» | Интерфейс переводит пользователя к вводу и подтверждению нового четырехзначного код-пароля. Пользователь вводит новый код-пароль без предварительного ввода текущего код-пароля. | 1 | Реализовано \ OQ5.3.1-8 | |
| S2: FR5.3.1-6 | Пользователь завершает установку или смену код-пароля | Интерфейс возвращает пользователя на ранее открытый экран «Настройки» и показывает сообщение «Код-пароль успешно изменен». | 1 | Реализовано \ OQ5.3.1-5 | |
| S2: FR5.3.1-7 | Пользователь отключает использование код-пароля | При отключении переключателя «Использовать код-пароль» интерфейс отключает использование код-пароля и биометрии, переводит переключатели «Использовать код-пароль» и «Вход по Face ID/Touch ID» в выключенное состояние и показывает сообщение «Код-пароль отключен». | 1 | Реализовано \ OQ5.3.1-4, OQ5.3.1-8 |
6. Открытые вопросы
BRD 5.3.1 v0.1 · booking.mobile.flutter · commit
1c4ad0e/ веткаmain(mergedev→main, 08.09.2026) · дата сверки 2026-09-09, повторная сверка по итогам дейликов (предыдущая — 2026-07-14, commitdad0c65) · якорьlib/src/feature/profile_page/profile_settings/(+feature/secure/), PIN-шагprofile_settings/screens/profile_PIN_reset_screen.dart. С коммитовdd54f5d/9db8346/1c4ad0eустановка, смена и отключение код-пароля, а также управление биометрией выполняются прямо с экрана «Настройки» (profile_settings_screen.dart,_authSection()); промежуточный экранpin_settings_screen.dart(маршрутPinSettingsRoute) остался зарегистрирован в роутере, но из UI больше не достижим — см. OQ5.3.1-8. Сводка (обновлено 2026-09-09): 8 вопросов (было 7, добавлена OQ5.3.1-8) — Closed 5 · Закрывает PM 1 · Подтверждено 1 · Open 1 (новая). Требований: Реализовано 7 из 7 (было: реализовано 4, частично 1, без статуса 2) — по коду все требования раздела 5.3.1 подтверждены; отрезано находок обратного прохода 0. Маршрутизация без сверки с гайдбуком (не передавался). Для новой строки адресат — толькоРазработка/Бизнесбез имён, как того требует контракт; существующие строки с именами (Герман/Владислав) не переразмечены.
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| OQ5.3.1-1 | Код FR5.3.1-1 | Требование говорит: при выборе «Изменить пароль» интерфейс открывает тот же шаг ввода и подтверждения пароля, что и в регистрации. В коде открывается отдельный экран «Смена пароля», не связанный с регистрационным: он дополнительно требует старый (текущий) пароль, затем новый и повтор, и отправляет смену на бэкенд. Регистрационный шаг установки пароля — другой экран и старый пароль не запрашивает. \ profile_settings_screen.dart:262-267; profile_pass_reset_page.dart:166,200-206,421-423 | Бизнес (Герман) | Closed | (А, рекоменд.) зафиксировать в BRD, что смена пароля в профиле — самостоятельный сценарий «смена» (старый + новый + повтор), а не переиспользование регистрационного шага «установка»: для существующего аккаунта запрос старого пароля обоснован. (Б) привести код к BRD и переиспользовать регистрационный шаг без старого пароля — ослабит защиту смены. | Согласовано: смена пароля выполняется на отдельном экране и требует текущий пароль, новый пароль и его повтор; данные отправляются на бэкенд. Макеты и требования обновлены. |
| OQ5.3.1-2 | Код FR5.3.1-4 | Требование говорит: при выборе «Задать новый код-пароль» интерфейс переводит пользователя сразу на шаг установки код-пароля (тот же, что в регистрации). В коде пункт в настройках называется «Установить код-пароль» / «Изменить код-пароль» (не «Задать новый код-пароль») и ведёт не на сам шаг, а на промежуточный экран управления код-паролем («Код-пароль»: установить / изменить / удалить + биометрия); уже оттуда открывается ввод код-пароля — и этот шаг действительно переиспользуется из регистрации (общий экран с параметром «профиль/регистрация»). \ profile_settings_screen.dart:279-304; pin_settings_screen.dart:120,136-171; profile_PIN_reset_screen.dart:19,31-39 | Бизнес (Герман) | Closed | (А, рекоменд.) описать в BRD промежуточный экран управления код-паролем и привести фактические названия пунктов: экран несёт нужные операции (изменить / удалить / биометрия). (Б) привести код к BRD и вести из настроек прямо на шаг установки — короче путь, но теряются операции управления. | Решение согласовано; ожидаются результаты тестирования. |
| OQ5.3.1-3 | Код вне BRD | Что нашли: при успешной смене пароля репозиторий после ответа бэкенда очищает все токены, сбрасывает состояние gRPC-клиента и выполняет полный выход (performComprehensiveLogout), и лишь затем ставит новый токен. FR5.3.1-3 требует только «вернуть на Настройки и показать сообщение»; полный сброс сессии не описан и при неблагоприятном порядке может выкинуть пользователя из аккаунта вместо возврата на «Настройки». \ profile_pass_repository.dart:53-70 | Разработка (Владислав) | Closed | (А, рекоменд.) подтвердить намеренность полного выхода при смене пароля и описать его в BRD (или в 1.2): смена пароля обычно требует переавторизации. (Б) если это лишнее — оставить тихое обновление токена без полного выхода, чтобы гарантировать возврат на «Настройки». Связать с OQ5.3.1-7. | Полный выход после смены пароля согласован как требование безопасности. До смены интерфейс предупреждает о повторном входе, после успешной смены показывает уведомление «Пароль успешно изменен», завершает сессию и переводит пользователя на вход в аккаунт. |
| OQ5.3.1-4 | Код FR5.3.1-7 | Что нашли: экран управления код-паролем позволяет удалить код-пароль (пункт «Удалить код-пароль» → защита сбрасывается в «нет код-пароля»). В разделе 5.3.1 удаление код-пароля не описано — только установка и смена. Биометрия (Face/Touch ID) на том же экране относится к разделу 1.2.1 («Не входит»), правило не дублируем. \ pin_settings_screen.dart:155-161,177-225 | Бизнес (Герман) | Closed | (А, рекоменд.) добавить в BRD сценарий удаления код-пароля: операция уже в проде и влияет на защиту входа. (Б) если удаление не предусмотрено — убрать пункт из интерфейса. | В S2 добавлено требование FR5.3.1-7 об отключении код-пароля через переключатель «Использовать код-пароль». При отключении код-пароля биометрия отключается автоматически; интерфейс переводит оба переключателя в выключенное состояние и показывает сообщение «Код-пароль отключен». |
| OQ5.3.1-5 | Код FR5.3.1-6 | Требование говорит: после установки/смены код-пароля интерфейс возвращает пользователя на экран «Настройки» и показывает «Код-пароль успешно изменен». В коде сообщение показывается верно, но вместо возврата назад экран «Настройки» открывается заново поверх стека (push нового ProfileSettingsRoute): под ним остаются промежуточные экраны код-пароля, а кнопка «назад» ведёт обратно на шаг ввода, а не к профилю. \ profile_PIN_reset_screen.dart:602-609,675-678 | Разработка (Владислав) | Закрывает PM | Закрываю сам: заменить push(ProfileSettingsRoute) на возврат к уже открытому экрану настроек (maybePop / popUntil до ProfileSettingsRoute) → тикет в Bitrix. | Доработка, вес 1. |
| OQ5.3.1-6 | Код вне BRD | Проблема: в проде на экране «Настройки» остался отладочный переключатель «Вариантно! Использовать/Задать код-пароль», просто открывающий экран код-пароля, а рядом — закомментированный дубль-пункт «Задать новый код-пароль». Это скаффолдинг разработки, к требованиям не относится и путает пользователя. \ profile_settings_screen.dart:305-319 (живой), 271-276 (закомментировано) | Разработка (Владислав) | Closed | Закрываю сам: удалить отладочный переключатель «Вариантно!…» и мёртвый закомментированный пункт из экрана настроек → тикет в Bitrix. | Решение согласовано; ожидаются результаты тестирования. |
| OQ5.3.1-7 | Код FR5.3.1-3 | Что подтверждено: после успешной смены пароля интерфейс показывает ровно сообщение «Пароль успешно изменен» и возвращает пользователя назад на экран «Настройки» (через закрытие экрана смены — maybePop). \ profile_pass_reset_page.dart:155-163 | — | Подтверждено | Расхождения по тексту сообщения и по возврату нет. Открытый вопрос по сбросу сессии при смене пароля — см. OQ5.3.1-3. | Решение подтверждено; уведомление об успешной смене пароля сохраняется. |
| OQ5.3.1-8 | Код вне BRD, повторная сверка 2026-09-09 | Что нашли: экран управления код-паролем pin_settings_screen.dart (маршрут PinSettingsRoute, ранее — целевой экран для OQ5.3.1-2 и OQ5.3.1-4) остался зарегистрирован в роутере, но нигде в коде на него больше нет перехода (push/redirect не найдены). Весь функционал раздела 5.3.1 — установка/смена код-пароля (FR5.3.1-4, FR5.3.1-5), сообщение об успехе и возврат в «Настройки» (FR5.3.1-6), отключение код-пароля и биометрии (FR5.3.1-7) — теперь работает напрямую с экрана «Настройки» (profile_settings_screen.dart, _authSection()). Требования выполняются, но заявленный ранее (в OQ5.3.1-2/OQ5.3.1-4) путь через отдельный экран «Код-пароль» de facto недостижим, а сам экран и его код (в т.ч. отдельная реализация тумблера биометрии) — мёртвый код. \ app_router.dart:362 (маршрут зарегистрирован); поиск по push(PinSettingsRoute — совпадений нет; замена — profile_settings_screen.dart:220-264 (_authSection) | Разработка | Open | Удалить pin_settings_screen.dart и маршрут PinSettingsRoute, если промежуточный экран не нужен намеренно (deep link / A-B-тест); если нужен — вернуть в него точку входа с экрана «Настройки» либо задокументировать, почему он остался в роутере. |