* Trading bot Grain * Fix a bit more of the trading bot * Advance on the tradingbot grain * Fix build * Fix db script * Fix user login * Fix a bit backtest * Fix cooldown and backtest * start fixing bot start * Fix startup * Setup local db * Fix build and update candles and scenario * Add bot registry * Add reminder * Updateing the grains * fix bootstraping * Save stats on tick * Save bot data every tick * Fix serialization * fix save bot stats * Fix get candles * use dict instead of list for position * Switch hashset to dict * Fix a bit * Fix bot launch and bot view * add migrations * Remove the tolist * Add agent grain * Save agent summary * clean * Add save bot * Update get bots * Add get bots * Fix stop/restart * fix Update config * Update scanner table on new backtest saved * Fix backtestRowDetails.tsx * Fix agentIndex * Update agentIndex * Fix more things * Update user cache * Fix * Fix account load/start/restart/run
40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using Managing.Application.Abstractions.Services;
|
|
|
|
namespace Managing.Api.Authorization;
|
|
|
|
public class JwtMiddleware
|
|
{
|
|
private readonly RequestDelegate _next;
|
|
|
|
public JwtMiddleware(RequestDelegate next, IConfiguration config)
|
|
{
|
|
_next = next;
|
|
}
|
|
|
|
public async Task Invoke(HttpContext context, IUserService userService, IJwtUtils jwtUtils)
|
|
{
|
|
if (context.Request.Path.StartsWithSegments("/User/create-token") ||
|
|
context.Request.Path.StartsWithSegments("/swagger") ||
|
|
context.Request.Path.StartsWithSegments("/health"))
|
|
{
|
|
await _next(context);
|
|
return;
|
|
}
|
|
|
|
var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
|
|
|
|
if (string.IsNullOrEmpty(token))
|
|
{
|
|
throw new UnauthorizedAccessException("Authorization token is missing");
|
|
}
|
|
|
|
var userId = jwtUtils.ValidateJwtToken(token);
|
|
if (userId != null)
|
|
{
|
|
// attach user to context on successful jwt validation
|
|
context.Items["User"] = await userService.GetUserByAddressAsync(userId);
|
|
}
|
|
|
|
await _next(context);
|
|
}
|
|
} |