2022-02-24 12:00:28 +00:00
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
2022-02-21 22:35:06 +00:00
|
|
|
namespace VoidCat.Model;
|
|
|
|
|
2022-02-24 12:00:28 +00:00
|
|
|
public abstract class VoidUser
|
|
|
|
{
|
|
|
|
protected VoidUser(Guid id, string email)
|
|
|
|
{
|
|
|
|
Id = id;
|
|
|
|
Email = email;
|
|
|
|
}
|
|
|
|
|
|
|
|
[JsonConverter(typeof(Base58GuidConverter))]
|
|
|
|
public Guid Id { get; }
|
|
|
|
|
|
|
|
public string Email { get; }
|
|
|
|
|
|
|
|
public HashSet<string> Roles { get; init; } = new() { Model.Roles.User };
|
|
|
|
|
|
|
|
public DateTimeOffset Created { get; init; }
|
|
|
|
|
|
|
|
public DateTimeOffset LastLogin { get; set; }
|
|
|
|
}
|
|
|
|
|
|
|
|
public sealed class PrivateVoidUser : VoidUser
|
2022-02-21 22:35:06 +00:00
|
|
|
{
|
2022-02-24 12:00:28 +00:00
|
|
|
public PrivateVoidUser(Guid id, string email, string passwordHash) : base(id, email)
|
|
|
|
{
|
|
|
|
PasswordHash = passwordHash;
|
|
|
|
}
|
|
|
|
|
|
|
|
public string PasswordHash { get; }
|
2022-02-21 22:35:06 +00:00
|
|
|
}
|
2022-02-24 12:00:28 +00:00
|
|
|
|
|
|
|
public sealed class PublicVoidUser : VoidUser
|
|
|
|
{
|
|
|
|
public PublicVoidUser(Guid id, string email) : base(id, email)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|