- Add User registration mechanism when adding auth provider id to claims, if no User Id corresponds to the auth provider Id - Swallow unique constraint violation for unique auth provider id on user table, in case of duplicate requests - Add Serilog logging - Add no bookmarks and no tags message when none is found on Bookmark List page
42 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|