using System.Security.Claims; using System.Text.Json; using DIT.Authentication.GatewayAuth.Abstractions; using Microsoft.AspNetCore.Authentication; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace DIT.Authentication.GatewayAuth.Extensions; public static partial class GatewayAuthExtensions { public static AuthenticationBuilder AddBase64JsonClaimsProvider(this AuthenticationBuilder builder, Func> claimsFactory) { builder.Services.TryAddScoped(sp => new Base64JsonClaimsProvider(new(JsonSerializerDefaults.Web), claimsFactory, userInjector: sp.GetService>())); return builder; } public static AuthenticationBuilder AddBase64JsonClaimsProvider(this AuthenticationBuilder builder, JsonSerializerOptions jsonSerializerOptions, Func> claimsFactory) { builder.Services.TryAddScoped(sp => new Base64JsonClaimsProvider(jsonSerializerOptions, claimsFactory, userInjector: sp.GetService>())); return builder; } public static AuthenticationBuilder AddBase64JsonClaimsProvider(this AuthenticationBuilder builder, Func jsonSerializerOptions, Func> claimsFactory) { builder.Services.TryAddScoped(sp => new Base64JsonClaimsProvider(jsonSerializerOptions(sp), claimsFactory, userInjector: sp.GetService>())); return builder; } }