using System.ComponentModel.DataAnnotations;
namespace AmtScanner.Api.Models;
///
/// 远程访问临时 Token
///
public class RemoteAccessToken
{
[Key]
public long Id { get; set; }
///
/// 唯一 Token 字符串
///
[Required]
[MaxLength(64)]
public string Token { get; set; } = string.Empty;
///
/// 关联的设备 ID
///
public long DeviceId { get; set; }
///
/// 关联的设备
///
public AmtDevice? Device { get; set; }
///
/// 关联的 Windows 凭据 ID
///
public long? WindowsCredentialId { get; set; }
///
/// 关联的 Windows 凭据
///
public WindowsCredential? WindowsCredential { get; set; }
///
/// 创建时间
///
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
///
/// 过期时间
///
public DateTime ExpiresAt { get; set; }
///
/// 是否已使用(一次性 Token)
///
public bool IsUsed { get; set; } = false;
///
/// 使用时间
///
public DateTime? UsedAt { get; set; }
///
/// 最大使用次数(0 表示无限制)
///
public int MaxUseCount { get; set; } = 1;
///
/// 已使用次数
///
public int UseCount { get; set; } = 0;
///
/// 创建者备注
///
[MaxLength(500)]
public string? Note { get; set; }
///
/// 检查 Token 是否有效
///
public bool IsValid()
{
if (DateTime.UtcNow > ExpiresAt) return false;
if (MaxUseCount > 0 && UseCount >= MaxUseCount) return false;
return true;
}
}