namespace AuthHex.Models { public class UserSession { public Guid SessionId { get; set; } public Guid UserId { get; set; } public User User { get; set; } = null!; public string RefreshTokenHash { get; set; } = string.Empty; public string? DeviceName { get; set; } public string? OS { get; set; } public string? Browser { get; set; } public string? IPAddress { get; set; } public DateTime ExpiresAt { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? RevokedAt { get; set; } public bool IsActive => RevokedAt == null && ExpiresAt > DateTime.UtcNow; } }