feat(login): 二级密码登录支持(STATUS_SECONDARY_PASSCODE_ERROR 30164) #1

Closed
opened 2026-03-31 05:40:33 +00:00 by leipayne18 · 0 comments
Owner

背景

旧版 Flutter 项目(im-client-im-dev)在 /vcode/check 返回错误码 30164STATUS_SECONDARY_PASSCODE_ERROR)时,会跳转到二级密码输入界面,用户输入后 MD5 哈希,再调 /login-userpassword 字段完成登录。

新版 customer-im-client-dev 完全缺失这条路径:

  • VerifyOtpResponse 无法携带错误响应中的 vcode_token
  • LoginRequestpassword 字段
  • LoginUseCase 没有处理 30164 的分支
  • 无二级密码输入 UI

结果:有二级密码的账号在新版无法登录。

改动范围

1. errors.dart — 新增错误码

static const int secondaryPasscodeRequired = 30164;

2. verify_otp_request.dart — 新增 SecondaryPasscodeRequiredData DTO

错误响应 datavcode_token / recovery_email / hint / reset_status

3. auth_repository.dart / auth_repository_impl.dart

  • verifyOtp() catch 30164 → 解析 data → 抛出 SecondaryPasscodeRequiredException

4. login_usecase.dart — 新增 loginWithSecondaryPasscode()

MD5 哈希用户输入的二级密码,调 AuthRepository.loginWithPasscode()

5. login_request.dart — 新增 password 字段

6. UI — 新增 secondary_passcode_page.dart

对齐旧版 secondaryPasscodeLoginVerifyView:6位 PIN 输入,找回密码占位

验收标准

  • 有二级密码的账号 OTP 验证后弹出二级密码输入界面
  • 输入正确密码后成功进入主界面
  • 输入错误密码显示错误提示
  • 无二级密码账号流程不变
## 背景 旧版 Flutter 项目(`im-client-im-dev`)在 `/vcode/check` 返回错误码 **30164**(`STATUS_SECONDARY_PASSCODE_ERROR`)时,会跳转到二级密码输入界面,用户输入后 MD5 哈希,再调 `/login-user` 带 `password` 字段完成登录。 新版 `customer-im-client-dev` 完全缺失这条路径: - `VerifyOtpResponse` 无法携带错误响应中的 `vcode_token` - `LoginRequest` 无 `password` 字段 - `LoginUseCase` 没有处理 30164 的分支 - 无二级密码输入 UI **结果:有二级密码的账号在新版无法登录。** ## 改动范围 ### 1. `errors.dart` — 新增错误码 ```dart static const int secondaryPasscodeRequired = 30164; ``` ### 2. `verify_otp_request.dart` — 新增 `SecondaryPasscodeRequiredData` DTO 错误响应 `data` 含 `vcode_token / recovery_email / hint / reset_status` ### 3. `auth_repository.dart` / `auth_repository_impl.dart` - `verifyOtp()` catch 30164 → 解析 data → 抛出 `SecondaryPasscodeRequiredException` ### 4. `login_usecase.dart` — 新增 `loginWithSecondaryPasscode()` MD5 哈希用户输入的二级密码,调 `AuthRepository.loginWithPasscode()` ### 5. `login_request.dart` — 新增 `password` 字段 ### 6. UI — 新增 `secondary_passcode_page.dart` 对齐旧版 `secondaryPasscodeLoginVerifyView`:6位 PIN 输入,找回密码占位 ## 验收标准 - [ ] 有二级密码的账号 OTP 验证后弹出二级密码输入界面 - [ ] 输入正确密码后成功进入主界面 - [ ] 输入错误密码显示错误提示 - [ ] 无二级密码账号流程不变
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leipayne18/customer-im-client-dev#1