jwt v1.0
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
using System.Text.Json;
|
||||
using Application.Endpoints;
|
||||
|
||||
namespace API.Middlewares;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
using Application.Services.Jwt;
|
||||
|
||||
public class JwtMiddleware
|
||||
{
|
||||
private readonly RequestDelegate _next;
|
||||
private readonly IJwtService _jwtService;
|
||||
|
||||
public JwtMiddleware(RequestDelegate next, IJwtService jwtService)
|
||||
{
|
||||
_next = next;
|
||||
_jwtService = jwtService;
|
||||
}
|
||||
|
||||
public async Task Invoke(HttpContext context)
|
||||
{
|
||||
var path = context.Request.Path.ToString().ToLower();
|
||||
|
||||
// Define the paths that should bypass JWT validation
|
||||
var bypassPaths = new string[]
|
||||
{
|
||||
"/api/doctors/login",
|
||||
"/api/doctors/register",
|
||||
"/api/patients/login",
|
||||
"/api/patients/register"
|
||||
};
|
||||
|
||||
if (!bypassPaths.Contains(path))
|
||||
{
|
||||
var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
|
||||
if (token != null && _jwtService.ValidateJwtToken(token))
|
||||
{
|
||||
await _next(context);
|
||||
}
|
||||
else
|
||||
{
|
||||
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
|
||||
context.Response.ContentType = "application/json";
|
||||
var response = new BaseResponse
|
||||
{
|
||||
StatusCode = StatusCodes.Status401Unauthorized,
|
||||
Message = "Invalid JWT Token",
|
||||
Data = null
|
||||
};
|
||||
var responseJson = JsonSerializer.Serialize(response);
|
||||
await context.Response.WriteAsync(responseJson);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user