feat: Add invite codes and message replies functionality

- Introduced a new migration to add InviteCodes table and ReplyToMessageId column in Messages.
- Updated ChatHub to support replying to messages.
- Enhanced ChatService to handle message replies and validate reply targets.
- Modified UserService to implement invite-only registration mode with invite code consumption.
- Added configuration options for registration modes in appsettings.
- Created unit tests for new features including invite code registration and message reply formatting.
This commit is contained in:
HueByte
2026-07-17 19:47:57 +02:00
parent bb987dda82
commit 3281064720
44 changed files with 2484 additions and 74 deletions
+20
View File
@@ -0,0 +1,20 @@
namespace EchoHub.Core.Models;
/// <summary>
/// A registration invite code. When the server runs with <c>Server:Registration = "invite"</c>,
/// new accounts (REST and IRC alike) require a valid, unexpired, not-fully-used code.
/// </summary>
public class InviteCode
{
public Guid Id { get; set; }
public required string Code { get; set; }
public Guid CreatedByUserId { get; set; }
public string CreatedByUsername { get; set; } = string.Empty;
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
/// <summary>Null means the code never expires.</summary>
public DateTimeOffset? ExpiresAt { get; set; }
public int MaxUses { get; set; } = 1;
public int UseCount { get; set; }
}