94 lines
3.2 KiB
C#
94 lines
3.2 KiB
C#
using AutoMapper;
|
|
using ldap_cesi.DTOs.Inputs;
|
|
using ldap_cesi.DTOs.Outputs.Utilisateur;
|
|
using ldap_cesi.Models;
|
|
using ldap_cesi.Repository.Services;
|
|
using ldap_cesi.Services.Interfaces;
|
|
using ldap_cesi.Validator.Utilisateur;
|
|
|
|
namespace ldap_cesi.Services;
|
|
|
|
public class UtilisateurService : IUtilisateurService
|
|
{
|
|
private readonly IRepositoryUtilisateur _repositoryUtilisateur;
|
|
private readonly IJwtService _jwtService;
|
|
private readonly IMapper _mapper;
|
|
public UtilisateurService(IRepositoryUtilisateur repositoryUtilisateur, IJwtService jwtService, IMapper mapper)
|
|
{
|
|
_repositoryUtilisateur = repositoryUtilisateur;
|
|
_jwtService = jwtService;
|
|
_mapper = mapper;
|
|
}
|
|
|
|
public async Task<IResponseDataModel<List<UtilisateurOutputDto>>> GetAll()
|
|
{
|
|
var utilisateurs = await _repositoryUtilisateur.GetAllAsync(1,10);
|
|
var utilisateursOutputDto = _mapper.Map<List<UtilisateurOutputDto>>(utilisateurs);
|
|
return new ResponseDataModel<List<UtilisateurOutputDto>>
|
|
{
|
|
Success = true,
|
|
StatusCode = 200,
|
|
Data = utilisateursOutputDto,
|
|
};
|
|
}
|
|
|
|
public async Task<IResponseDataModel<UtilisateurOutputDto>> GetById(int id)
|
|
{
|
|
var utililisateur = await _repositoryUtilisateur.GetByIdIncludeRoleAsync(id);
|
|
var utilisateurOutput = _mapper.Map<UtilisateurOutputDto>(utililisateur);
|
|
return new ResponseDataModel<UtilisateurOutputDto>
|
|
{
|
|
Success = true,
|
|
StatusCode = 200,
|
|
Data = utilisateurOutput,
|
|
};
|
|
}
|
|
|
|
public async Task<IResponseDataModel<UtilisateurOutputDto>> Login(UtilisateurLoginDto utilisateurInput)
|
|
{
|
|
var validation = new UtilisateurLoginValidator();
|
|
var result = validation.Validate(utilisateurInput);
|
|
if (!result.IsValid)
|
|
{
|
|
return new ResponseDataModel<UtilisateurOutputDto>
|
|
{
|
|
StatusCode = 400,
|
|
Success = false,
|
|
Message = "Données utilisateur invalides: " + string.Join(", ", result.Errors)
|
|
};
|
|
}
|
|
|
|
var utilisateur = await _repositoryUtilisateur.GetByEmailAsync(utilisateurInput.Email);
|
|
|
|
if (utilisateur == null)
|
|
{
|
|
return new ResponseDataModel<UtilisateurOutputDto>
|
|
{
|
|
Success = false,
|
|
StatusCode = 404,
|
|
Message = "Utilisateur non trouvé."
|
|
};
|
|
}
|
|
|
|
if (!BCrypt.Net.BCrypt.Verify(utilisateurInput.MotDePasse, utilisateur.MotDePasse))
|
|
{
|
|
return new ResponseDataModel<UtilisateurOutputDto>
|
|
{
|
|
Success = false,
|
|
StatusCode = 401,
|
|
Message = "Mot de passe incorrect."
|
|
};
|
|
}
|
|
var token = _jwtService.GenerateToken(utilisateur);
|
|
var utilisateurOutputDto = _mapper.Map<UtilisateurOutputDto>(utilisateur);
|
|
|
|
return new ResponseDataModel<UtilisateurOutputDto>
|
|
{
|
|
Success = true,
|
|
StatusCode = 200,
|
|
Data = utilisateurOutputDto,
|
|
Token = token,
|
|
Message = "Connexion réussie."
|
|
};
|
|
}
|
|
} |