- 修复邮箱登录验证码未校验问题,恢复输入错误提示及刷新验证码逻辑 - 新增多租户选项登录流程,支持单租户直接登录及多租户选择弹窗 - 扩展登录接口及模型,新增 TenantOption 类型和 LoginOutcome 联合结果类型 - 新增 loginBySelectTenant 二次登录接口及对应组件逻辑 - 统一保存登录态,包括 token、租户ID和用户ID到本地存储 - 调整前端短信登录逻辑,根据返回状态决定流程,支持多租户弹窗选择 - 确保新增代码无类型错误并通过构建验证
75 lines
1.5 KiB
TypeScript
75 lines
1.5 KiB
TypeScript
import type { User } from '@/api/system/user/model';
|
||
/**
|
||
* 登录参数
|
||
*/
|
||
export interface LoginParam {
|
||
// 账号
|
||
username?: string;
|
||
// 邮箱
|
||
email?: string;
|
||
// 用户ID
|
||
userId?: string | number;
|
||
// 密码
|
||
password?: string;
|
||
// 租户id
|
||
tenantId?: number;
|
||
// 是否记住密码
|
||
remember?: boolean;
|
||
// 手机号码
|
||
phone?: string;
|
||
// 短信验证码
|
||
code?: string;
|
||
// 短信验证码(别名,与后端 LoginParam.code 对应)
|
||
smsCode?: string;
|
||
}
|
||
|
||
/**
|
||
* 登录返回结果
|
||
*/
|
||
export interface LoginResult {
|
||
// token
|
||
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 };
|
||
|
||
/**
|
||
* 图形验证码返回结果
|
||
*/
|
||
export interface CaptchaResult {
|
||
// 图形验证码base64数据
|
||
base64: string;
|
||
// 验证码文本
|
||
text: string;
|
||
}
|
||
|
||
/**
|
||
* 短信验证码返回结果
|
||
*/
|
||
export interface SmsCaptchaResult {
|
||
// 验证码文本
|
||
text: string;
|
||
}
|