namespace marlin.web.Util; using System.Security.Claims; public static class ClaimsPrincipalExtensions { public static Guid? GetAgentId(this ClaimsPrincipal user) => user.GetGuidClaim("agent_id"); public static Guid? GetJobId(this ClaimsPrincipal user) => user.GetGuidClaim("job_id"); public static Guid? GetUserId(this ClaimsPrincipal user) => user.GetGuidClaim("user_id"); public static Guid RequireAgentId(this ClaimsPrincipal user) => user.GetAgentId() ?? throw new InvalidOperationException("Request has no agent_id claim."); public static Guid RequireJobId(this ClaimsPrincipal user) => user.GetJobId() ?? throw new InvalidOperationException("Request has no job_id claim."); public static Guid RequireUserId(this ClaimsPrincipal user) => user.GetUserId() ?? throw new InvalidOperationException("Request has no user_id claim."); private static Guid? GetGuidClaim(this ClaimsPrincipal user, string type) => Guid.TryParse(user.FindFirstValue(type), out var value) ? value : null; }