46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
namespace LaaProductionWeb.Blazor.Components.Identity.Services
|
|
{
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IdentityModel.Tokens.Jwt;
|
|
using System.Security.Claims;
|
|
|
|
public class IdentityJwtService(ILogger<IdentityJwtService> logger)
|
|
{
|
|
private readonly ILogger<IdentityJwtService> logger = logger;
|
|
|
|
public IEnumerable<Claim> GetClaims(string token)
|
|
{
|
|
var claims = new List<Claim>();
|
|
|
|
try
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(token))
|
|
{
|
|
var jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
|
|
var securityToken = jwtSecurityTokenHandler.ReadToken(token);
|
|
var jwtSecurityToken = securityToken as JwtSecurityToken;
|
|
|
|
if (jwtSecurityToken.ValidTo <= DateTime.UtcNow)
|
|
{
|
|
claims.AddRange(jwtSecurityToken.Claims);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
this.logger.LogError(e, e.Message);
|
|
}
|
|
|
|
if (claims.Count == 0)
|
|
{
|
|
claims.Add(new Claim(ClaimTypes.Role, "JustUser"));
|
|
}
|
|
|
|
return claims;
|
|
}
|
|
}
|
|
}
|