using System.Security.Claims; namespace Hutopy.Web.Common; public static class ClaimsPrincipalExtensions { public static Guid GetUserId(this ClaimsPrincipal claims) { return (Guid)claims.GetFirstValue(ClaimTypes.NameIdentifier); } public static string GetFirstName(this ClaimsPrincipal claims) { return (string)claims.GetFirstValue(ClaimTypes.GivenName); } public static string GetLastName(this ClaimsPrincipal claims) { return (string)claims.GetFirstValue(ClaimTypes.Surname); } public static string GetEmail(this ClaimsPrincipal claims) { return (string)claims.GetFirstValue(ClaimTypes.Email); } public static object GetFirstValue(this ClaimsPrincipal claims, string key) { var claim = claims.FindFirst(key); if (claim is null) throw new MissingClaimException(key); if (typeof(TValue) == typeof(Guid)) { return Guid.Parse(claim.Value); } return Convert.ChangeType(claim.Value, typeof(TValue)); } }