using System.Collections.Concurrent; namespace Campaign_Tracker.Server.Authentication; public sealed class InMemoryAuthenticationAuditStore : IAuthenticationAuditStore { private readonly ConcurrentQueue _events = new(); public IReadOnlyCollection Events => _events.ToArray(); public void RecordSuccess(string subject, string traceIdentifier) { _events.Enqueue(new AuthenticationAuditEvent( AuthenticationAuditEventType.Success, subject, "authenticated", traceIdentifier, DateTimeOffset.UtcNow)); } public void RecordFailure(string reason, string traceIdentifier) { _events.Enqueue(new AuthenticationAuditEvent( AuthenticationAuditEventType.Failure, "anonymous", reason, traceIdentifier, DateTimeOffset.UtcNow)); } }