using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Options; using System.Linq; using System.Threading.Tasks; using FamilyTreeAPI.Interface; using FamilyTreeAPI.Entities; namespace FamilyTreeAPI.Authorization; public class JwtMiddleware { private readonly RequestDelegate _next; private readonly AppSettings _appSettings; public JwtMiddleware(RequestDelegate next, IOptions appSettings) { _next = next; _appSettings = appSettings.Value; } public async Task Invoke(HttpContext context, IJwtUtils jwtUtils) { var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last(); if (token != null) { var user = jwtUtils.ValidateJwtToken(token); if (user != null) { // attach user to context on successful jwt validation //here to put in the real user //TODO if you want to add information for User context.Items["User"] = user; } } await _next(context); } }