Очистка
This commit is contained in:
@@ -1,36 +1,77 @@
|
||||
using Knot.Contracts.Auth.Domain;
|
||||
using Knot.Shared.Kernel;
|
||||
using Knot.Shared.Kernel.Events;
|
||||
using Knot.Contracts.Auth.Domain;
|
||||
|
||||
namespace Knot.Modules.Auth.Domain;
|
||||
|
||||
/// <summary>
|
||||
/// Ñóùíîñòü ïîëüçîâàòåëÿ â êîíòåêñòå èäåíòèôèêàöèè (Identity).
|
||||
/// �������� ������������ � ��������� ������������� (Identity).
|
||||
/// </summary>
|
||||
public sealed class User : AggregateRoot<Guid>
|
||||
{
|
||||
public string Username { get; set; }
|
||||
public string Username { get; private set; }
|
||||
public string PasswordHash { get; private set; }
|
||||
public string DisplayName { get; set; }
|
||||
public string DisplayName { get; private set; }
|
||||
public string? Email { get; private set; }
|
||||
public string? Bio { get; private set; }
|
||||
public string? Avatar { get; set; }
|
||||
public string? Avatar { get; private 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; set; }
|
||||
public bool IsOnline { get; private set; }
|
||||
public DateTime? LastSeen { get; private set; }
|
||||
public bool HideStatus { get; private set; }
|
||||
public bool IsBanned { get; set; }
|
||||
public string? PhoneNumber { get; set; }
|
||||
public string? RefreshToken { get; set; }
|
||||
public DateTime? BannedUntil { get; set; }
|
||||
public bool IsBanned { get; private set; }
|
||||
public string? PhoneNumber { get; private set; }
|
||||
public string? RefreshToken { get; private set; }
|
||||
public DateTime? BannedUntil { get; private set; }
|
||||
|
||||
public void Ban() => IsBanned = true;
|
||||
public void Unban() => IsBanned = false;
|
||||
|
||||
public void SetOnline(bool isOnline, DateTime? lastSeen = null)
|
||||
{
|
||||
IsOnline = isOnline;
|
||||
LastSeen = lastSeen ?? DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public void SetPhoneNumber(string? phoneNumber)
|
||||
{
|
||||
PhoneNumber = phoneNumber;
|
||||
}
|
||||
|
||||
public void SetRefreshToken(string? refreshToken)
|
||||
{
|
||||
RefreshToken = refreshToken;
|
||||
}
|
||||
|
||||
public void SetBannedUntil(DateTime? bannedUntil)
|
||||
{
|
||||
BannedUntil = bannedUntil;
|
||||
}
|
||||
|
||||
public void SetAsExternal(string domain)
|
||||
{
|
||||
IsExternal = true;
|
||||
UserDomain = domain;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates user from contract (used by repository).
|
||||
/// </summary>
|
||||
public void UpdateFromContract(UserContract contract)
|
||||
{
|
||||
Username = contract.Username;
|
||||
DisplayName = contract.DisplayName;
|
||||
PhoneNumber = contract.PhoneNumber;
|
||||
IsBanned = contract.IsBanned;
|
||||
BannedUntil = contract.BannedUntil;
|
||||
SetOnline(contract.IsOnline, contract.LastSeen);
|
||||
UserDomain = contract.Domain;
|
||||
}
|
||||
|
||||
private User(Guid id, string username, string passwordHash, string displayName, string? email, string? bio = null)
|
||||
: base(id)
|
||||
{
|
||||
@@ -44,7 +85,7 @@ public sealed class User : AggregateRoot<Guid>
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ôàáðè÷íûé ìåòîä äëÿ ñîçäàíèÿ íîâîãî ïîëüçîâàòåëÿ.
|
||||
/// ��������� ����� ��� �������� ������ ������������.
|
||||
/// </summary>
|
||||
public static User Create(string username, string passwordHash, string displayName, string? email = null, string? bio = null)
|
||||
{
|
||||
@@ -54,14 +95,14 @@ public sealed class User : AggregateRoot<Guid>
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ñîçäàåò "òåíåâîãî" ïîëüçîâàòåëÿ äëÿ êîíòàêòà ñ äðóãîãî ñåðâåðà.
|
||||
/// ������� "��������" ������������ ��� �������� � ������� �������.
|
||||
/// </summary>
|
||||
public static User CreateExternal(Guid id, string username, string displayName, string domain, string? avatar = null)
|
||||
{
|
||||
var user = new User(id, username, "EXTERNAL_USER", displayName, null, null);
|
||||
user.IsExternal = true;
|
||||
user._domain = domain;
|
||||
user.Avatar = avatar;
|
||||
user.SetAsExternal(domain);
|
||||
if (avatar != null)
|
||||
user.UpdateAvatar(avatar);
|
||||
return user;
|
||||
}
|
||||
|
||||
@@ -98,7 +139,8 @@ public sealed class User : AggregateRoot<Guid>
|
||||
{
|
||||
IsOnline = isOnline;
|
||||
LastSeen = DateTime.UtcNow;
|
||||
|
||||
|
||||
|
||||
if (!HideStatus)
|
||||
{
|
||||
RaiseDomainEvent(new UserStatusChangedDomainEvent(Id, IsOnline, LastSeen.Value));
|
||||
|
||||
Reference in New Issue
Block a user