feat(auth): used FastEndpoint facilities instead of custom solution

This commit is contained in:
2026-02-06 01:06:16 -05:00
parent 19e2c22111
commit 789e55e79d

View File

@@ -2,6 +2,7 @@ using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using FastEndpoints;
using FastEndpoints.Security;
using FluentValidation;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
@@ -58,26 +59,24 @@ public class LoginEndpoint(AppDbContext db, IOptions<JwtSettings> jwtSettings)
Logger.LogInformation("User logged in: {Email}", normalizedEmail);
var expiresAt = DateTime.UtcNow.AddMinutes(_jwtSettings.ExpirationMinutes);
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSettings.Secret));
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var claims = new[]
var jwtToken = JwtBearer.CreateToken(o =>
{
o.SigningKey = _jwtSettings.Secret;
o.Issuer = _jwtSettings.Issuer;
o.Audience = _jwtSettings.Audience;
o.ExpireAt = expiresAt;
//o.User.Roles.Add("Manager", "Auditor");
o.User.Claims.Add(
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()),
new Claim(JwtRegisteredClaimNames.Email, user.Email),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var token = new JwtSecurityToken(
_jwtSettings.Issuer,
_jwtSettings.Audience,
claims,
expires: expiresAt,
signingCredentials: credentials
);
});
var response = new AuthResponse(
new JwtSecurityTokenHandler().WriteToken(token),
jwtToken,
expiresAt,
new UserInfo(user.Id, user.Email, user.VerifiedAt.HasValue)
);