|
- using System.Collections.Concurrent;
-
- namespace Campaign_Tracker.Server.Authentication;
-
- public sealed class InMemoryAuthenticationAuditStore : IAuthenticationAuditStore
- {
- private readonly ConcurrentQueue<AuthenticationAuditEvent> _events = new();
-
- public IReadOnlyCollection<AuthenticationAuditEvent> 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));
- }
- }
|