Files
customer-im-client-dev/apps/im_app/pubspec.yaml
pp-bot b8f1f82ee5
Some checks failed
CI / Lint (push) Has been cancelled
feat(login): 二级密码登录支持(STATUS_SECONDARY_PASSCODE_ERROR #1)
## 问题
旧版 Flutter 项目在 /vcode/check 返回 30164 时展示二级密码输入界面;
新版完全缺失此路径,有二级密码的账号无法登录。

## 改动

### networks_sdk
- `networks_sdk_method_channel_datasource.dart`:executeRequest 的
  generic catch 改为 rethrow,允许 decodeResponse override 抛出
  自定义业务异常(原为 ApiError.unknown 包裹导致数据丢失)

### 数据层
- `errors.dart`:新增 `secondaryPasscodeRequired = 30164`
- `exceptions.dart`(新增):`SecondaryPasscodeRequiredException`
  携带 vcodeToken / recoveryEmail / hint / resetStatus
- `verify_otp_request.dart`:override decodeResponse,拦截 30164,
  从响应 data 提取字段,throw SecondaryPasscodeRequiredException
- `login_request.dart`:新增可选 password 字段 + toJson override
  (条件序列化,null 时不带 password 字段)
- `auth_repository.dart`:新增 loginWithPasscode() 接口
- `auth_repository_impl.dart`:实现 loginWithPasscode()

### 业务层
- `login_usecase.dart`:新增 loginWithSecondaryPasscode()
  (MD5 哈希 passcode → 调 AuthRepository.loginWithPasscode)
- `pubspec.yaml`:新增 crypto: ^3.0.6(用于 MD5)

### UI 层
- `login_state.dart`:新增 LoginStep.secondaryPasscode
  + vcodeToken / passcodeHint / recoveryEmail 字段
- `login_view_model.dart`:verifyAndLogin 捕获 SecondaryPasscodeRequiredException
  跳转步骤 3;新增 verifyPasscode()
- `login_secondary_passcode_step.dart`(新增):密码输入 UI(hint 显示、
  obscured 输入框、错误提示、忘记密码占位)
- `login_page.dart`:switch 路由接入 LoginStep.secondaryPasscode
2026-03-31 15:36:54 +09:00

150 lines
3.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: im_app
description: "Customer IM Client"
publish_to: none
version: 0.1.0
environment:
sdk: ^3.11.0
dependencies:
flutter:
sdk: flutter
# Workspace SDK packages - 使用 git dependency 控制版本
networks_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: networks_sdk/v0.0.1
path: packages/networks_sdk
storage_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: storage_sdk/v0.0.1
path: packages/storage_sdk
media_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: media_sdk/v0.0.1
path: packages/media_sdk
rtc_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: rtc_sdk/v0.0.1
path: packages/rtc_sdk
notification_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: notification_sdk/v0.0.1
path: packages/notification_sdk
protocol_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: protocol_sdk/v0.0.1
path: packages/protocol_sdk
l10n_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: l10n_sdk/v0.0.1
path: packages/l10n_sdk
cipher_guard_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: cipher_guard_sdk/v0.0.1
path: packages/cipher_guard_sdk
im_log_sdk:
git:
url: https://gitea.winwayinfo.com/CUS-IM/customer-im-client.git
ref: im_log_sdk/v0.0.1
path: packages/im_log_sdk
# 状态管理 - Riverpod
flutter_riverpod: ^3.0.0
riverpod_annotation: ^4.0.0
# 不可变状态 - Freezed
freezed_annotation: ^3.0.0
# JSON 序列化
json_annotation: ^4.8.1
# 路由导航
go_router: ^12.0.0
# 网络状态监听
connectivity_plus: ^6.1.0
# JWT 解析token 过期检测、主动刷新)
dart_jsonwebtoken: ^3.1.0
# 数据库schema 定义在 im_app连接/CRUD 封装在 storage_sdk
drift: ^2.22.0
# 设备信息deviceId / deviceName
device_info_plus: ^11.0.0
# 文件打开(#30
open_filex: ^4.4.1
# 音频播放(#31
audioplayers: ^6.1.0
# 视频播放(#32
video_player: ^2.9.2
chewie: ^1.9.0
# 小程序 WebView#25
webview_flutter: ^4.8.0
# 图片预览 — 全屏 pinch-to-zoom#32
photo_view: ^0.15.0
# 图片选取 — 相册/相机(#33
image_picker: ^1.1.2
# 图片编辑 — 裁剪/旋转(#34
image_cropper: ^5.0.1
# 图片网络缓存 — 磁盘+内存双缓存(#57
cached_network_image: ^3.3.1
crypto: ^3.0.6
# 图片保存到相册(#32
image_gallery_saver_plus: ^3.0.5
# 分享(#32
share_plus: ^10.0.0
dev_dependencies:
flutter_test:
sdk: flutter
integration_test:
sdk: flutter
# 代码生成
drift_dev: ^2.22.0
build_runner: ^2.4.6
riverpod_generator: ^4.0.0
freezed: ^3.0.0
json_serializable: ^6.7.1
# 代码检查
flutter_lints: ^6.0.0
very_good_analysis: ^5.1.0
# 测试
mocktail: ^1.0.1
flutter:
uses-material-design: true
assets:
- assets/