using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using AMessanger.Application.Settings; using AMessanger.Core.Abstraction; using AMessanger.Core.Models; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; namespace AMessanger.Application.Services; public class JwtService(IOptions options) : IJwtService { private readonly JwtSettings _settings = options.Value; public string GenerateToken(User user) { var claims = new[] { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Name, user.Name) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_settings.Key)); var creditnails = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: _settings.Issuer, audience: _settings.Audience, claims: claims, expires: DateTime.UtcNow.AddMinutes(_settings.ExpiresMinutes), signingCredentials: creditnails ); return new JwtSecurityTokenHandler().WriteToken(token); } }