File: Helpers\Jwt.cs
Web Access
Project: src\src\Tools\dotnet-user-jwts\src\dotnet-user-jwts.csproj (dotnet-user-jwts)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
 
namespace Microsoft.AspNetCore.Authentication.JwtBearer.Tools;
 
public record Jwt(string Id, string Scheme, string Name, string Audience, DateTimeOffset NotBefore, DateTimeOffset Expires, DateTimeOffset Issued, string Token)
{
    public IEnumerable<string> Scopes { get; set; } = new List<string>();
 
    public IEnumerable<string> Roles { get; set; } = new List<string>();
 
    public IDictionary<string, string> CustomClaims { get; set; } = new Dictionary<string, string>();
 
    public override string ToString() => Token;
 
    public static Jwt Create(
        string scheme,
        JwtSecurityToken token,
        string encodedToken,
        IEnumerable<string> scopes = null,
        IEnumerable<string> roles = null,
        IDictionary<string, string> customClaims = null)
    {
        return new Jwt(token.Id, scheme, token.Subject, string.Join(", ", token.Audiences), token.ValidFrom, token.ValidTo, token.IssuedAt, encodedToken)
        {
            Scopes = scopes,
            Roles = roles,
            CustomClaims = customClaims
        };
    }
}