Domain rules for kicking and banning users from whiteboards
This commit is contained in:
@@ -14,5 +14,28 @@ public class WhiteboardErrors : AbstractErrors<Whiteboard, WhiteboardId>
|
|||||||
|
|
||||||
return CreateValidationError(code, message);
|
return CreateValidationError(code, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ValidationError OnlyOwnerCanBanOtherUsers(UserId currentUserId)
|
||||||
|
{
|
||||||
|
string code = "only_owner_can_ban_other_users";
|
||||||
|
string message = $"Only owner of whiteboard can ban other users. Current user id: '{currentUserId}' is not the owner.";
|
||||||
|
|
||||||
|
return CreateValidationError(code, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ValidationError OnlyOwnerCanUnbanOtherUsers(UserId currentUserId)
|
||||||
|
{
|
||||||
|
string code = "only_owner_can_unban_other_users";
|
||||||
|
string message = $"Only owner of whiteboard can unban other users. Current user id: '{currentUserId}' is not the owner.";
|
||||||
|
|
||||||
|
return CreateValidationError(code, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ValidationError OnlyOwnerCanKickOtherUsers(UserId currentUserId)
|
||||||
|
{
|
||||||
|
string code = "only_owner_can_unban_other_users";
|
||||||
|
string message = $"Only owner of whiteboard can kick other users. Current user id: '{currentUserId}' is not the owner.";
|
||||||
|
|
||||||
|
return CreateValidationError(code, message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using AipsCore.Domain.Common.Validation;
|
||||||
|
using AipsCore.Domain.Models.User.ValueObjects;
|
||||||
|
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||||
|
|
||||||
|
namespace AipsCore.Domain.Models.Whiteboard;
|
||||||
|
|
||||||
|
public partial class Whiteboard
|
||||||
|
{
|
||||||
|
public void BanUser(UserId currentUserId, WhiteboardMembership.WhiteboardMembership whiteboardMembership)
|
||||||
|
{
|
||||||
|
if (WhiteboardOwnerId != currentUserId)
|
||||||
|
{
|
||||||
|
throw new ValidationException(WhiteboardErrors.OnlyOwnerCanBanOtherUsers(currentUserId));
|
||||||
|
}
|
||||||
|
|
||||||
|
whiteboardMembership.Ban();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using AipsCore.Domain.Common.Validation;
|
||||||
|
using AipsCore.Domain.Models.User.ValueObjects;
|
||||||
|
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||||
|
|
||||||
|
namespace AipsCore.Domain.Models.Whiteboard;
|
||||||
|
|
||||||
|
public partial class Whiteboard
|
||||||
|
{
|
||||||
|
public void KickUser(UserId currentUserId, WhiteboardMembership.WhiteboardMembership whiteboardMembership)
|
||||||
|
{
|
||||||
|
if (WhiteboardOwnerId != currentUserId)
|
||||||
|
{
|
||||||
|
throw new ValidationException(WhiteboardErrors.OnlyOwnerCanKickOtherUsers(currentUserId));
|
||||||
|
}
|
||||||
|
|
||||||
|
whiteboardMembership.Kick();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using AipsCore.Domain.Common.Validation;
|
||||||
|
using AipsCore.Domain.Models.User.ValueObjects;
|
||||||
|
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||||
|
|
||||||
|
namespace AipsCore.Domain.Models.Whiteboard;
|
||||||
|
|
||||||
|
public partial class Whiteboard
|
||||||
|
{
|
||||||
|
public void UnbanUser(UserId currentUserId, WhiteboardMembership.WhiteboardMembership whiteboardMembership)
|
||||||
|
{
|
||||||
|
if (WhiteboardOwnerId != currentUserId)
|
||||||
|
{
|
||||||
|
throw new ValidationException(WhiteboardErrors.OnlyOwnerCanUnbanOtherUsers(currentUserId));
|
||||||
|
}
|
||||||
|
|
||||||
|
whiteboardMembership.Unban();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using AipsCore.Domain.Models.WhiteboardMembership.ValueObjects;
|
||||||
|
|
||||||
|
namespace AipsCore.Domain.Models.WhiteboardMembership;
|
||||||
|
|
||||||
|
public partial class WhiteboardMembership
|
||||||
|
{
|
||||||
|
public void Ban()
|
||||||
|
{
|
||||||
|
IsBanned = new WhiteboardMembershipIsBanned(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using AipsCore.Domain.Models.WhiteboardMembership.ValueObjects;
|
||||||
|
|
||||||
|
namespace AipsCore.Domain.Models.WhiteboardMembership;
|
||||||
|
|
||||||
|
public partial class WhiteboardMembership
|
||||||
|
{
|
||||||
|
public void Kick()
|
||||||
|
{
|
||||||
|
CanJoin = new WhiteboardMembershipCanJoin(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using AipsCore.Domain.Models.WhiteboardMembership.ValueObjects;
|
||||||
|
|
||||||
|
namespace AipsCore.Domain.Models.WhiteboardMembership;
|
||||||
|
|
||||||
|
public partial class WhiteboardMembership
|
||||||
|
{
|
||||||
|
public void Unban()
|
||||||
|
{
|
||||||
|
IsBanned = new WhiteboardMembershipIsBanned(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ using AipsCore.Domain.Models.WhiteboardMembership.ValueObjects;
|
|||||||
|
|
||||||
namespace AipsCore.Domain.Models.WhiteboardMembership;
|
namespace AipsCore.Domain.Models.WhiteboardMembership;
|
||||||
|
|
||||||
public class WhiteboardMembership : DomainModel<WhiteboardMembershipId>
|
public partial class WhiteboardMembership : DomainModel<WhiteboardMembershipId>
|
||||||
{
|
{
|
||||||
public WhiteboardId WhiteboardId { get; private set; }
|
public WhiteboardId WhiteboardId { get; private set; }
|
||||||
public UserId UserId { get; private set; }
|
public UserId UserId { get; private set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user