using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Test.Services.Middleware
{
public class TestUserMiddleware
{
private readonly RequestDelegate _next;
public TestUserMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
var userAccess = context.RequestServices.GetRequiredService<ITestUserAccessor>();
var testUser = new TestUser();
var userName = context.Request.Headers["X-TEST-USERNAME"];
var userIdStr = context.Request.Headers["X-TEST-USERID"];
int userId;
if (!string.IsNullOrEmpty(userName))
{
testUser.Username = userName;
}
if (int.TryParse(userIdStr, out userId))
{
testUser.UserId = userId;
}
userAccess.CurrentUser = testUser;
await _next(context);
}
}
}