Files
sequence/services/csharp/example/Features/Auth/Logout.cs
T
Vitalii Litvinchuk 23958e8e2c first commit
2026-06-13 23:23:50 +03:00

29 lines
937 B
C#

using MediatR;
using Microsoft.AspNetCore.Http;
using SequenceAuth.Lib;
namespace SequenceAuth.Example.Features.Auth;
public record LogoutCommand() : IRequest;
public class LogoutCommandHandler(ISequenceStore sequenceStore, IHttpContextAccessor httpContextAccessor, Microsoft.Extensions.Options.IOptions<SequenceAuthOptions> options) : IRequestHandler<LogoutCommand>
{
public async Task Handle(LogoutCommand request, CancellationToken cancellationToken)
{
var userIdStr = httpContextAccessor.HttpContext?.Items[options.Value.UserIdItemKey]?.ToString();
var isUserIdPresent = string.IsNullOrEmpty(userIdStr);
_ = isUserIdPresent switch
{
false => await ProcessLogout(userIdStr!),
true => 0
};
}
private async Task<int> ProcessLogout(string userId)
{
await sequenceStore.InvalidateUserSessionsAsync(userId);
return 1;
}
}