/**
 * @description 认证相关类型定义
 * @author yslg
 * @since 2025-10-06
 */

import { SysUser, SysUserInfo } from '../user';
import { DeptRoleVO } from '../dept';
import { SysPermission } from '../permission';
import { SysMenu } from '../menu';
import { LoginType } from '../enums';

/**
 * 登录参数
 */
export interface LoginParam {
  /** 登录类型 */
  loginType?: LoginType;
  /** 用户名 */
  username?: string;
  /** 邮箱 */
  email?: string;
  /** 手机号 */
  phone?: string;
  /** 微信ID */
  wechatID?: string;
  /** 密码 */
  password?: string;
  /** 验证码 */
  captcha?: string;
  /** 验证码ID */
  captchaId?: string;
  /** 记住我 */
  rememberMe?: boolean;
}

/**
 * 登录域对象 - 包含登录后的所有用户信息
 */
export interface LoginDomain {
  /** 用户基本信息 */
  user?: SysUser;
  /** 用户详细信息 */
  userInfo?: SysUserInfo;
  /** 用户角色列表 */
  roles?: DeptRoleVO[];
  /** 用户权限列表 */
  permissions?: SysPermission[];
  /** 用户菜单列表 */
  menus?: SysMenu[];
  /** JWT令牌 */
  token?: string;
  /** 令牌过期时间 */
  tokenExpireTime?: string;
  /** 登录时间 */
  loginTime?: string;
  /** 登录IP地址 */
  ipAddress?: string;
  /** 登录类型 */
  loginType?: LoginType;
}

/**
 * 登录日志
 */
export interface SysLoginLog {
  /** ID */
  id?: string;
  /** 用户ID */
  userID?: string;
  /** 用户名 */
  username?: string;
  /** 登录状态 0-失败 1-成功 */
  status?: number;
  /** 登录消息 */
  message?: string;
  /** 登录时间 */
  loginTime?: string;
  /** 登录IP */
  ipAddress?: string;
  /** 浏览器 */
  browser?: string;
  /** 操作系统 */
  os?: string;
}

