feat(passport): 增加多租户手机号登录支持并修复邮箱验证码校验
- 修复邮箱登录验证码未校验问题,恢复输入错误提示及刷新验证码逻辑 - 新增多租户选项登录流程,支持单租户直接登录及多租户选择弹窗 - 扩展登录接口及模型,新增 TenantOption 类型和 LoginOutcome 联合结果类型 - 新增 loginBySelectTenant 二次登录接口及对应组件逻辑 - 统一保存登录态,包括 token、租户ID和用户ID到本地存储 - 调整前端短信登录逻辑,根据返回状态决定流程,支持多租户弹窗选择 - 确保新增代码无类型错误并通过构建验证
This commit is contained in:
@@ -19,6 +19,8 @@ export interface LoginParam {
|
||||
phone?: string;
|
||||
// 短信验证码
|
||||
code?: string;
|
||||
// 短信验证码(别名,与后端 LoginParam.code 对应)
|
||||
smsCode?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -29,8 +31,30 @@ export interface LoginResult {
|
||||
access_token?: string;
|
||||
// 用户信息
|
||||
user?: User;
|
||||
// 多租户场景下返回,此时 access_token / user 为 null
|
||||
tenants?: TenantOption[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 多租户登录时后端返回的租户选项
|
||||
*/
|
||||
export interface TenantOption {
|
||||
tenantId?: number;
|
||||
tenantName?: string;
|
||||
userId?: number;
|
||||
username?: string;
|
||||
nickname?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录接口统一返回结果
|
||||
* - ok:单租户直接登录成功
|
||||
* - selectTenant:多租户,需要前端弹出选择租户列表
|
||||
*/
|
||||
export type LoginOutcome =
|
||||
| { status: 'ok'; user: NonNullable<LoginResult['user']>; message: string }
|
||||
| { status: 'selectTenant'; tenants: TenantOption[]; message: string };
|
||||
|
||||
/**
|
||||
* 图形验证码返回结果
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user