Files
YABA/API/YABA.API/Middlewares/AddCustomClaimsMiddleware.cs
Carl Tibule 9bbd12e4c3
All checks were successful
ci/woodpecker/tag/api_build Pipeline was successful
ci/woodpecker/tag/api_uploadimage Pipeline was successful
ci/woodpecker/tag/web_uploadimage Pipeline was successful
Created Woodpecker CI/CD deployment
- Created Dockerfile for packing up API and Web projects as Docker image
2024-04-05 23:36:49 -05:00

42 lines
1.3 KiB
C#

using System.Security.Claims;
using YABA.API.Extensions;
using YABA.Common.Extensions;
using YABA.Common.Lookups;
using YABA.Service.Interfaces;
namespace YABA.API.Middlewares
{
public class AddCustomClaimsMiddleware
{
private readonly RequestDelegate _next;
public AddCustomClaimsMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext, IUserService userService)
{
if (httpContext.User != null && httpContext.User.Identity.IsAuthenticated)
{
var userAuthProviderId = httpContext.User.Identity.GetAuthProviderId();
if (!string.IsNullOrEmpty(userAuthProviderId))
{
var userId = userService.GetUserId(userAuthProviderId);
if(userId <= 0)
{
var registedUser = await userService.RegisterUser(userAuthProviderId);
userId = registedUser.Id;
}
httpContext.User.Identities.FirstOrDefault().AddClaim(new Claim(ClaimsLookup.UserId.GetClaimName(), userId.ToString()));
}
}
await _next(httpContext);
}
}
}