Контракты
This commit is contained in:
@@ -1,30 +1,32 @@
|
||||
using Knot.Shared.Kernel;
|
||||
using Knot.Shared.Kernel;
|
||||
using Knot.Shared.Kernel.Events;
|
||||
using Knot.Modules.Auth.Contracts.Domain;
|
||||
|
||||
namespace Knot.Modules.Auth.Domain;
|
||||
|
||||
public sealed record UserStatusChangedDomainEvent(Guid UserId, bool IsOnline, DateTime LastSeen) : IDomainEvent;
|
||||
|
||||
/// <summary>
|
||||
/// Сущность пользователя в контексте идентификации (Identity).
|
||||
/// </summary>
|
||||
public sealed class User : AggregateRoot<Guid>
|
||||
{
|
||||
public string Username { get; private set; }
|
||||
public string Username { get; set; }
|
||||
public string PasswordHash { get; private set; }
|
||||
public string DisplayName { get; private set; }
|
||||
public string DisplayName { get; set; }
|
||||
public string? Email { get; private set; }
|
||||
public string? Bio { get; private set; }
|
||||
public string? Avatar { get; private set; }
|
||||
public string? Avatar { get; set; }
|
||||
public DateTime? Birthday { get; private set; }
|
||||
public DateTime CreatedAt { get; private set; }
|
||||
public bool HideStoryViews { get; private set; }
|
||||
public bool IsExternal { get; private set; }
|
||||
public string? Domain { get; private set; }
|
||||
public bool IsOnline { get; private set; }
|
||||
public bool IsOnline { get; set; }
|
||||
public DateTime? LastSeen { get; private set; }
|
||||
public bool HideStatus { get; private set; }
|
||||
public bool IsBanned { get; private set; }
|
||||
public bool IsBanned { get; set; }
|
||||
public string? PhoneNumber { get; set; }
|
||||
public string? RefreshToken { get; set; }
|
||||
public DateTime? BannedUntil { get; set; }
|
||||
|
||||
public void Ban() => IsBanned = true;
|
||||
public void Unban() => IsBanned = false;
|
||||
@@ -58,11 +60,18 @@ public sealed class User : AggregateRoot<Guid>
|
||||
{
|
||||
var user = new User(id, username, "EXTERNAL_USER", displayName, null, null);
|
||||
user.IsExternal = true;
|
||||
user.Domain = domain;
|
||||
user._domain = domain;
|
||||
user.Avatar = avatar;
|
||||
return user;
|
||||
}
|
||||
|
||||
private string? _domain;
|
||||
public string? UserDomain
|
||||
{
|
||||
get => _domain;
|
||||
set => _domain = value;
|
||||
}
|
||||
|
||||
public void UpdateProfile(string displayName, string? bio, DateTime? birthday)
|
||||
{
|
||||
DisplayName = displayName;
|
||||
@@ -100,5 +109,28 @@ public sealed class User : AggregateRoot<Guid>
|
||||
{
|
||||
HideStatus = hide;
|
||||
}
|
||||
}
|
||||
|
||||
public UserContract ToContract()
|
||||
{
|
||||
return new UserContract
|
||||
{
|
||||
Id = Id,
|
||||
Username = Username,
|
||||
DisplayName = DisplayName,
|
||||
PasswordHash = PasswordHash,
|
||||
PhoneNumber = PhoneNumber,
|
||||
Email = Email,
|
||||
Bio = Bio,
|
||||
Avatar = Avatar,
|
||||
Birthday = Birthday,
|
||||
IsBot = false,
|
||||
CreatedAt = CreatedAt,
|
||||
IsBanned = IsBanned,
|
||||
BannedUntil = BannedUntil,
|
||||
IsOnline = IsOnline,
|
||||
IsExternal = IsExternal,
|
||||
Domain = _domain,
|
||||
LastSeen = LastSeen
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user