using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace EnvelopeGenerator.GeneratorAPI.Controllers { public static class ControllerExtensions { public static int? GetIdOrDefault(this ClaimsPrincipal user) => int.TryParse(user.FindFirstValue(ClaimTypes.NameIdentifier) ?? user.FindFirstValue("sub"), out int result) ? result : null; public static int GetId(this ClaimsPrincipal user) => user.GetIdOrDefault() ?? throw new InvalidOperationException("User ID claim is missing or invalid. This may indicate a misconfigured or forged JWT token."); public static string? GetUsername(this ClaimsPrincipal user) => user.FindFirst(ClaimTypes.Name)?.Value; public static string? GetName(this ClaimsPrincipal user) => user.FindFirst(ClaimTypes.Surname)?.Value; public static string? GetPrename(this ClaimsPrincipal user) => user.FindFirst(ClaimTypes.GivenName)?.Value; public static string? GetEmail(this ClaimsPrincipal user) => user.FindFirst(ClaimTypes.Email)?.Value; } }