Files
FACULTATE-HEALTHCARE_MANAGER/backend/API/Middlewares/ApiKeyValidationMiddleware.cs
T
2024-04-08 01:03:59 +03:00

39 lines
1.2 KiB
C#

using Application.Endpoints;
namespace API.Middlewares;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System.Threading.Tasks;
public class ApiKeyMiddleware
{
private readonly RequestDelegate _next;
private const string API_KEY_HEADER_NAME = "ApiKey";
private readonly string _apiKey;
public ApiKeyMiddleware(RequestDelegate next, IConfiguration configuration)
{
_next = next;
_apiKey = configuration.GetValue<string>("ApiKeySettings:ApiKey");
}
public async Task InvokeAsync(HttpContext context)
{
if (!context.Request.Headers.TryGetValue(API_KEY_HEADER_NAME, out var extractedApiKey))
{
context.Response.StatusCode = HttpStatusCodes.Unauthorized; // Unauthorized
await context.Response.WriteAsync("API Key is missing");
return;
}
if (!_apiKey.Equals(extractedApiKey))
{
context.Response.StatusCode = HttpStatusCodes.Forbidden; // Forbidden
await context.Response.WriteAsync("Invalid API Key");
return;
}
await _next(context); // API Key is valid, proceed to the next middleware
}
}