improve user claim retrieval

This commit is contained in:
cuqmbr 2025-06-09 14:17:10 +03:00
parent 29f0614e56
commit 8bed1d39f3
Signed by: cuqmbr
GPG Key ID: 0AA446880C766199

View File

@ -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<IdentityRole> 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!;