namespace Hua.Todo.Application.CloudSync.Models;

/// <summary>
/// 登录请求。
/// </summary>
public class LoginRequest
{
    /// <summary>
    /// 用户名。
    /// </summary>
    public string UserName { get; set; } = string.Empty;

    /// <summary>
    /// 密码。
    /// </summary>
    public string Password { get; set; } = string.Empty;
}

/// <summary>
/// 登录响应。
/// </summary>
public class LoginResponse
{
    /// <summary>
    /// Bearer Token（会话 ID）。
    /// </summary>
    public string AccessToken { get; set; } = string.Empty;

    /// <summary>
    /// 会话过期时间（UTC）。
    /// </summary>
    public DateTime ExpiresAtUtc { get; set; }

    /// <summary>
    /// 用户 ID。
    /// </summary>
    public Guid UserId { get; set; }

    /// <summary>
    /// 用户角色。
    /// </summary>
    public string Role { get; set; } = string.Empty;

    /// <summary>
    /// 用户权限列表。
    /// </summary>
    public List<string> Permissions { get; set; } = new();
}

/// <summary>
/// 初始化管理员账号请求（仅在系统尚无云用户时可用）。
/// </summary>
public class BootstrapAdminRequest
{
    /// <summary>
    /// 用户名。
    /// </summary>
    public string UserName { get; set; } = string.Empty;

    /// <summary>
    /// 密码。
    /// </summary>
    public string Password { get; set; } = string.Empty;
}

/// <summary>
/// 二次认证（step-up）请求。
/// </summary>
public class StepUpRequest
{
    /// <summary>
    /// 二次口令（v1.2.0 最小实现：复用登录密码进行再认证）。
    /// </summary>
    public string Password { get; set; } = string.Empty;
}

/// <summary>
/// 二次认证（step-up）响应。
/// </summary>
public class StepUpResponse
{
    /// <summary>
    /// 二次认证有效期截止（UTC）。
    /// </summary>
    public DateTime StepUpExpiresAtUtc { get; set; }
}

