Files
guilixu-admin/src/api/passport/login/model/index.ts
赵忠林 45fc45680f feat(passport): 增加多租户手机号登录支持并修复邮箱验证码校验
- 修复邮箱登录验证码未校验问题,恢复输入错误提示及刷新验证码逻辑
- 新增多租户选项登录流程,支持单租户直接登录及多租户选择弹窗
- 扩展登录接口及模型,新增 TenantOption 类型和 LoginOutcome 联合结果类型
- 新增 loginBySelectTenant 二次登录接口及对应组件逻辑
- 统一保存登录态,包括 token、租户ID和用户ID到本地存储
- 调整前端短信登录逻辑,根据返回状态决定流程,支持多租户弹窗选择
- 确保新增代码无类型错误并通过构建验证
2026-07-24 22:33:39 +08:00

75 lines
1.5 KiB
TypeScript
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.

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;
}