104 lines
3.0 KiB
C#
104 lines
3.0 KiB
C#
|
|
namespace LingAdmin.Shared.Models;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 用户实体模型
|
||
|
|
/// </summary>
|
||
|
|
public class User
|
||
|
|
{
|
||
|
|
public int Id { get; set; }
|
||
|
|
public required string Name { get; set; }
|
||
|
|
public required string Email { get; set; }
|
||
|
|
public required string PasswordHash { get; set; }
|
||
|
|
public required string Status { get; set; }
|
||
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||
|
|
public DateTime? LastLoginAt { get; set; }
|
||
|
|
public DateTime? UpdatedAt { get; set; }
|
||
|
|
|
||
|
|
// 关联角色
|
||
|
|
public ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 角色实体模型
|
||
|
|
/// </summary>
|
||
|
|
public class Role
|
||
|
|
{
|
||
|
|
public int Id { get; set; }
|
||
|
|
public required string Name { get; set; }
|
||
|
|
public required string Code { get; set; }
|
||
|
|
public string? Description { get; set; }
|
||
|
|
public bool IsSystem { get; set; } = false;
|
||
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||
|
|
public DateTime? UpdatedAt { get; set; }
|
||
|
|
|
||
|
|
// 关联权限
|
||
|
|
public ICollection<RolePermission> RolePermissions { get; set; } = new List<RolePermission>();
|
||
|
|
public ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 权限实体模型
|
||
|
|
/// </summary>
|
||
|
|
public class Permission
|
||
|
|
{
|
||
|
|
public int Id { get; set; }
|
||
|
|
public required string Name { get; set; }
|
||
|
|
public required string Code { get; set; }
|
||
|
|
public string? Description { get; set; }
|
||
|
|
public required string Resource { get; set; }
|
||
|
|
public required string Action { get; set; }
|
||
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||
|
|
|
||
|
|
public ICollection<RolePermission> RolePermissions { get; set; } = new List<RolePermission>();
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 用户角色关联表
|
||
|
|
/// </summary>
|
||
|
|
public class UserRole
|
||
|
|
{
|
||
|
|
public int UserId { get; set; }
|
||
|
|
public User User { get; set; } = null!;
|
||
|
|
|
||
|
|
public int RoleId { get; set; }
|
||
|
|
public Role Role { get; set; } = null!;
|
||
|
|
|
||
|
|
public DateTime AssignedAt { get; set; } = DateTime.UtcNow;
|
||
|
|
public int? AssignedBy { get; set; }
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 角色权限关联表
|
||
|
|
/// </summary>
|
||
|
|
public class RolePermission
|
||
|
|
{
|
||
|
|
public int RoleId { get; set; }
|
||
|
|
public Role Role { get; set; } = null!;
|
||
|
|
|
||
|
|
public int PermissionId { get; set; }
|
||
|
|
public Permission Permission { get; set; } = null!;
|
||
|
|
|
||
|
|
public DateTime AssignedAt { get; set; } = DateTime.UtcNow;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 刷新令牌实体
|
||
|
|
/// </summary>
|
||
|
|
public class RefreshToken
|
||
|
|
{
|
||
|
|
public int Id { get; set; }
|
||
|
|
public int UserId { get; set; }
|
||
|
|
public User User { get; set; } = null!;
|
||
|
|
public required string Token { get; set; }
|
||
|
|
public DateTime ExpiresAt { get; set; }
|
||
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||
|
|
public string? CreatedByIp { get; set; }
|
||
|
|
public DateTime? RevokedAt { get; set; }
|
||
|
|
public string? RevokedByIp { get; set; }
|
||
|
|
public string? ReplacedByToken { get; set; }
|
||
|
|
|
||
|
|
public bool IsExpired => DateTime.UtcNow >= ExpiresAt;
|
||
|
|
public bool IsRevoked => RevokedAt != null;
|
||
|
|
public bool IsActive => !IsRevoked && !IsExpired;
|
||
|
|
}
|