using System.Security.Claims; using System.Text.Encodings.Web; using Microsoft.AspNetCore.Authentication; using Microsoft.Extensions.Options; namespace Tnsu.ApprovalRoute.Api.Auth; public sealed class DevAuthHandler( IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder, IConfiguration configuration) : AuthenticationHandler(options, logger, encoder) { protected override Task HandleAuthenticateAsync() { var email = Request.Headers["X-Dev-User-Email"].FirstOrDefault() ?? configuration["Dev:DefaultUserEmail"] ?? "dev@tnsu.kz"; var identity = new ClaimsIdentity([new Claim(ClaimTypes.Email, email)], AuthSchemes.Dev); var ticket = new AuthenticationTicket(new ClaimsPrincipal(identity), AuthSchemes.Dev); return Task.FromResult(AuthenticateResult.Success(ticket)); } }