using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Abp.Domain.Entities;
using Abp.Domain.Entities.Auditing;
using Abp.Timing;
using VberZero.Authorization;
using VberZero.BaseSystem.MultiTenancy;
namespace VberZero.BaseSystem.Users;
///
/// 存储用户的登录尝试
///
[Table("Sys_UserLoginAttempts")]
public class UserLoginAttempt : Entity, IHasCreationTime, IMayHaveTenant
{
public const int MaxTenancyNameLength = Tenant.MaxTenancyNameLength;
public const int MaxUserNameOrEmailAddressLength = User.MaxEmailAddressLength;
public const int MaxClientIpAddressLength = 64;
public const int MaxClientNameLength = 128;
public const int MaxBrowserInfoLength = 512;
///
/// 租户的 ID,如果 是有效的租户名称。
///
public virtual int? TenantId { get; set; }
[StringLength(MaxTenancyNameLength)]
public virtual string TenancyName { get; set; }
///
/// 用户 ID,如果 是有效的用户名或电子邮件或手机号
///
public virtual long? UserId { get; set; }
[StringLength(MaxUserNameOrEmailAddressLength)]
public virtual string UserNameOrEmailOrPhone { get; set; }
///
/// 客户端的 IP 地址
///
[StringLength(MaxClientIpAddressLength)]
public virtual string ClientIpAddress { get; set; }
///
/// 客户端的名称(一般为计算机名称)
///
[StringLength(MaxClientNameLength)]
public virtual string ClientName { get; set; }
///
/// 如果在 Web 请求中调用此方法,则浏览器信息。
///
[StringLength(MaxBrowserInfoLength)]
public virtual string BrowserInfo { get; set; }
///
/// 登录尝试结果
///
public virtual VzLoginResultType Result { get; set; }
public virtual DateTime CreationTime { get; set; }
public UserLoginAttempt()
{
CreationTime = Clock.Now;
}
}