first commit
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user