using System.Security.Cryptography;
using System.Text;
using Dpz.Core.Infrastructure.Entity;
namespace Dpz.Core.Public.Entity;
[Backup]
public class User : IBaseEntity
{
/// <summary>
/// 账号
/// </summary>
public string Id { get; set; }
/// <summary>
/// 昵称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool? Enable { get; set; }
/// <summary>
/// /签名
/// </summary>
public string Sign { get; set; }
/// <summary>
/// 头像
/// </summary>
public string Avatar { get; set; }
/// <summary>
/// 性别
/// </summary>
public Sex Sex { get; set; }
/// <summary>
/// key
/// </summary>
public string Key { get; set; }
/// <summary>
/// 权限
/// </summary>
public Permissions? Permissions { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 最后修改时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime? LastUpdateTime { get; set; }
public UserInfo GetUserInfo()
{
return new UserInfo
{
Id = this.Id,
Name = this.Name,
Sign = Sign,
Sex = Sex,
Avatar = string.IsNullOrEmpty(Avatar) ? "/images/guest.png" : Avatar,
Permissions = Permissions,
Enable = this.Enable,
Key = this.Key
};
}
public string GenerateKey()
{
var sourceKey =
$"{Id}{Password}by-dpangzi";
var buffer = Encoding.UTF8.GetBytes(sourceKey);
var key = new StringBuilder();
using var sha256 = SHA256.Create();
var array = sha256.ComputeHash(buffer);
for (var i = 0; i < array.Length; i++)
{
key.Append($"{array[i]:X2}");
if ((i % 4) == 3 && i != array.Length - 1) key.Append("-");
}
return key.ToString();
}
}