using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using Microsoft.IdentityModel.Tokens; using Aeldria.Api.Models; namespace Aeldria.Api.Services; public class JwtService { private readonly IConfiguration _config; public JwtService(IConfiguration config) { _config = config; } public string GenerateToken(Account account) { var claims = new[] { new Claim(ClaimTypes.NameIdentifier, account.AccountId.ToString()), new Claim(ClaimTypes.Name, account.Username) }; var key = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(_config["Jwt:Key"]!) ); var creds = new SigningCredentials( key, SecurityAlgorithms.HmacSha256 ); var token = new JwtSecurityToken( issuer: _config["Jwt:Issuer"], audience: _config["Jwt:Audience"], claims: claims, expires: DateTime.UtcNow.AddDays(7), signingCredentials: creds ); return new JwtSecurityTokenHandler().WriteToken(token); } }