using System; using System.Globalization; using System.IdentityModel.Tokens.Jwt; using System.Linq; namespace API.Helpers; public static class JwtHelper { /// /// Extracts the expiration date from a JWT token. /// public static DateTime GetTokenExpiry(string jwtToken) { if (string.IsNullOrEmpty(jwtToken)) return DateTime.MinValue; // Parse the JWT and extract the expiry claim var jwtHandler = new JwtSecurityTokenHandler(); var token = jwtHandler.ReadJwtToken(jwtToken); return token.ValidTo; // var exp = token.Claims.FirstOrDefault(c => c.Type == "exp")?.Value; // // if (long.TryParse(exp, CultureInfo.InvariantCulture, out var expSeconds)) // { // return DateTimeOffset.FromUnixTimeSeconds(expSeconds).UtcDateTime; // } // // // // return DateTime.MinValue; } /// /// Checks if a JWT token is valid based on its expiry date. /// public static bool IsTokenValid(string jwtToken) { if (string.IsNullOrEmpty(jwtToken)) return false; var expiry = GetTokenExpiry(jwtToken); return expiry > DateTime.UtcNow; } }