From 8bed1d39f3a44724b2433f6f9c39caf5d0cafcbd Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Mon, 9 Jun 2025 14:17:10 +0300 Subject: [PATCH] improve user claim retrieval --- .../Services/AspNetSessionUserService.cs | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/HttpApi/Services/AspNetSessionUserService.cs b/src/HttpApi/Services/AspNetSessionUserService.cs index 2f9c8fd..d73a1c1 100644 --- a/src/HttpApi/Services/AspNetSessionUserService.cs +++ b/src/HttpApi/Services/AspNetSessionUserService.cs @@ -18,8 +18,10 @@ public sealed class AspNetSessionUserService : SessionUserService get { var claimValue = _httpContext.User.Claims - .FirstOrDefault(c => c.Properties - .Any(p => p.Value == JwtRegisteredClaimNames.Sub)) + .FirstOrDefault(c => + c.Type == JwtRegisteredClaimNames.Sub || + c.Properties + .Any(p => p.Value == JwtRegisteredClaimNames.Sub)) ?.Value; var parsed = System.Guid.TryParse(claimValue, out var guid); @@ -29,18 +31,24 @@ public sealed class AspNetSessionUserService : SessionUserService } public string? Username => _httpContext.User.Claims - .FirstOrDefault(c => c.Properties - .Any(p => p.Value == JwtRegisteredClaimNames.Nickname)) + .FirstOrDefault(c => + c.Type == JwtRegisteredClaimNames.Nickname || + c.Properties + .Any(p => p.Value == JwtRegisteredClaimNames.Nickname)) ?.Value; public string? Email => _httpContext.User.Claims - .FirstOrDefault(c => c.Properties - .Any(p => p.Value == JwtRegisteredClaimNames.Email)) + .FirstOrDefault(c => + c.Type == JwtRegisteredClaimNames.Email || + c.Properties + .Any(p => p.Value == JwtRegisteredClaimNames.Email)) ?.Value; public ICollection Roles => _httpContext.User.Claims - .Where(c => c.Properties - .Any(p => p.Value == "roles")) + .Where(c => + c.Type == "roles" || + c.Properties + .Any(p => p.Value == "roles")) .Select(c => IdentityRole.FromName(c.Value)) .ToArray() ?? default!;