using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using AGSS.Models.Entities; using Microsoft.IdentityModel.Tokens; namespace AGSS.Utilities; public class Jwt { private readonly IConfiguration _configuration; public Jwt(IConfiguration configuration) { _configuration = configuration; } public string GenerateJwtToken(UserModel user) { var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, user.Email), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(ClaimTypes.NameIdentifier, user.Id) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes( _configuration["Jwt:Key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expires = DateTime.Now.AddMinutes( Convert.ToDouble(_configuration["Jwt:ExpireMinutes"])); var token = new JwtSecurityToken( issuer: _configuration["Jwt:Issuer"], audience: _configuration["Jwt:Audience"], claims: claims, expires: expires, signingCredentials: creds ); return new JwtSecurityTokenHandler().WriteToken(token); } }