using GameList.Data; using Microsoft.AspNetCore.Authentication; namespace GameList.Infrastructure; public class EnsurePlayerExistsMiddleware(RequestDelegate next) { public async Task InvokeAsync(HttpContext context, AppDbContext db) { if (context.User.Identity?.IsAuthenticated == true) { var id = context.User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value; if (string.IsNullOrWhiteSpace(id) || !Guid.TryParse(id, out var playerId) || await db.Players.FindAsync(playerId) is null) { await context.SignOutAsync(); context.Response.StatusCode = StatusCodes.Status401Unauthorized; return; } } await next(context); } }