using Distribution.Features.User; using Distribution.Infra.Authorization; using Microsoft.AspNetCore.Identity; namespace Distribution.Features.Auth; public class AuthService(IUserRepository userRepo, IJwtTokenService tokenService) { private readonly PasswordHasher _hasher = new(); public async Task LoginAsync(LoginRequest request) { var user = await userRepo.GetByUsernameAsync(request.Username); if (user is null || !user.IsActive) return null; var result = _hasher.VerifyHashedPassword(user, user.PasswordHash, request.Password); if (result == PasswordVerificationResult.Failed) return null; var token = tokenService.GenerateToken(user); return new LoginResponse(token, user.Id, user.Username, user.Role?.Name ?? string.Empty); } }