iFileProxy/src/Models/User.cs
2024-12-01 17:37:06 +08:00

167 lines
4.3 KiB
C#

using Newtonsoft.Json;
namespace iFileProxy.Models
{
public enum UserMask
{
Guest = -1, // 访客
User = 0,
Admin = 1,
SuperAdmin = 2, // 超级管理员
}
public enum UserState
{
None = 0,
Blocked = 1
}
public enum UserEventType
{
Login = 0,
Logout = 1,
Registry = 2,
UpdateMask = 3, // 添加权限修改事件类型
UpdatePassword = 4, // 添加密码修改事件类型
UpdateNickname = 5, // 添加昵称修改事件类型
}
public class User
{
/// <summary>
/// 用户ID
/// </summary>
[JsonProperty("user_id")]
public string UserId { get; set; } = Guid.NewGuid().ToString();
/// <summary>
/// 昵称
/// </summary>
[JsonProperty("nickname")]
public string Nickname { get; set; } = string.Empty;
/// <summary>
/// 用户名
/// </summary>
[JsonProperty("username")]
public string Username { get; set; } = string.Empty;
/// <summary>
/// 密码哈希
/// </summary>
[JsonProperty("password_hash")]
public string PasswordHash { get; set; } = string.Empty;
/// <summary>
/// 用户权限掩码
/// </summary>
[JsonProperty("mask")]
public UserMask Mask { get; set; } = UserMask.User;
/// <summary>
/// 用户状态
/// </summary>
[JsonProperty("state")]
public UserState State { get; set; } = UserState.None;
/// <summary>
/// 创建时间
/// </summary>
[JsonProperty("create_time")]
public DateTime CreateTime { get; set; } = DateTime.Now;
/// <summary>
/// 最后登录时间
/// </summary>
[JsonProperty("last_login_time")]
public DateTime LastLoginTime { get; set; }
/// <summary>
/// 最后登录IP
/// </summary>
[JsonProperty("last_login_ip")]
public string LastLoginIP { get; set; } = string.Empty;
/// <summary>
/// 电子邮箱
/// </summary>
[JsonProperty("email")]
public string Email { get; set; } = string.Empty;
}
public class UserEvent
{
/// <summary>
/// 事件ID
/// </summary>
[JsonProperty("event_id")]
public string EventId { get; set; } = Guid.NewGuid().ToString();
/// <summary>
/// 用户ID
/// </summary>
[JsonProperty("user_id")]
public string UserId { get; set; } = string.Empty;
/// <summary>
/// 事件类型
/// </summary>
[JsonProperty("event_type")]
public UserEventType EventType { get; set; }
/// <summary>
/// 事件时间
/// </summary>
[JsonProperty("event_time")]
public DateTime EventTime { get; set; } = DateTime.Now;
/// <summary>
/// 事件IP
/// </summary>
[JsonProperty("event_ip")]
public string EventIP { get; set; } = string.Empty;
/// <summary>
/// 事件详情
/// </summary>
[JsonProperty("event_detail")]
public string EventDetail { get; set; } = string.Empty;
}
public class UserEventDetail : UserEvent
{
/// <summary>
/// 用户名
/// </summary>
[JsonProperty("username")]
public string Username { get; set; } = string.Empty;
/// <summary>
/// 昵称
/// </summary>
[JsonProperty("nickname")]
public string Nickname { get; set; } = string.Empty;
}
/// <summary>
/// 注册请求数据结构
/// </summary>
public class RegisterRequest
{
public string Username { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public string NickName { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
}
/// <summary>
/// 登录请求数据结构
/// </summary>
public class LoginRequest
{
/// <summary>
/// 用户名或邮箱
/// </summary>
public string Username { get; set; } = string.Empty;
public string Account { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
}
}