namespace PostFundManagement.Domain.Extensions; public static class General { public static Guid GetUserId(this HttpContext context) => (Guid)context.Items[Constants.UserIdItemKey]!; public static string GetUserEmail(this HttpContext context) => (string)context.Items[Constants.EmaiItemKey]!; public static (bool Decoded, Guid userId) GetUserId(this ClaimsPrincipal principal) { var sidClaim = principal.FindFirst("sid")?.Value ?? principal.FindFirst(ClaimTypes.Sid)?.Value; var decoded = Guid.TryParse(sidClaim, out var userId); return (decoded, userId); } public static (bool Decoded, Guid email) GetUserEmail(this ClaimsPrincipal principal) { var emailClaim = principal.FindFirst("email")?.Value ?? principal.FindFirst(ClaimTypes.Email)?.Value; var decoded = Guid.TryParse(emailClaim, out var email); return (decoded, email); } public static Microsoft.AspNetCore.Mvc.ProblemDetails ToProblems(this IReadOnlyList errors) => new() { Detail = string.Join(',', errors.Select(e => e.Message)), Status = StatusCodes.Status400BadRequest, Title = errors[0]?.Message, }; }