- Ajout de fluent validator #4
@ -27,6 +27,7 @@ public static class Conf
|
|||||||
builder.AddSerilog();
|
builder.AddSerilog();
|
||||||
builder.AddJwt();
|
builder.AddJwt();
|
||||||
builder.Services.AddAutoMapper(typeof(Program));
|
builder.Services.AddAutoMapper(typeof(Program));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddRepositories(this WebApplicationBuilder builder)
|
public static void AddRepositories(this WebApplicationBuilder builder)
|
||||||
|
@ -3,5 +3,4 @@ namespace ldap_cesi.Models;
|
|||||||
public class ResponseDataModel<T> : ResponseModel, IResponseDataModel<T> where T : class
|
public class ResponseDataModel<T> : ResponseModel, IResponseDataModel<T> where T : class
|
||||||
{
|
{
|
||||||
public T Data { get; set; } = null!;
|
public T Data { get; set; } = null!;
|
||||||
public string Token { get; set; }
|
|
||||||
}
|
}
|
@ -4,7 +4,7 @@ public class ResponseModel : IResponseModel
|
|||||||
{
|
{
|
||||||
public bool Success { get; set; }
|
public bool Success { get; set; }
|
||||||
public string? Message { get; set; }
|
public string? Message { get; set; }
|
||||||
public string? TokenJWT { get; set; }
|
public string? Token { get; set; }
|
||||||
|
|
||||||
public int StatusCode { get; set; }
|
public int StatusCode { get; set; }
|
||||||
}
|
}
|
@ -7,7 +7,7 @@ namespace ldap_cesi.Services.Interfaces;
|
|||||||
|
|
||||||
public interface IUtilisateurService
|
public interface IUtilisateurService
|
||||||
{
|
{
|
||||||
Task<IResponseDataModel<List<Utilisateur>>> GetAll();
|
Task<IResponseDataModel<List<UtilisateurOutputDto>>> GetAll();
|
||||||
Task<IResponseDataModel<Utilisateur>> GetById(int id);
|
Task<IResponseDataModel<UtilisateurOutputDto>> GetById(int id);
|
||||||
Task<IResponseDataModel<UtilisateurOutputDto>> Login(UtilisateurLoginDto utilisateurInput);
|
Task<IResponseDataModel<UtilisateurOutputDto>> Login(UtilisateurLoginDto utilisateurInput);
|
||||||
}
|
}
|
@ -5,6 +5,7 @@ using ldap_cesi.Entities;
|
|||||||
using ldap_cesi.Models;
|
using ldap_cesi.Models;
|
||||||
using ldap_cesi.Repository.Services;
|
using ldap_cesi.Repository.Services;
|
||||||
using ldap_cesi.Services.Interfaces;
|
using ldap_cesi.Services.Interfaces;
|
||||||
|
using ldap_cesi.Validator.Utilisateur;
|
||||||
|
|
||||||
namespace ldap_cesi.Services;
|
namespace ldap_cesi.Services;
|
||||||
|
|
||||||
@ -20,30 +21,44 @@ public class UtilisateurService : IUtilisateurService
|
|||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IResponseDataModel<List<Utilisateur>>> GetAll()
|
public async Task<IResponseDataModel<List<UtilisateurOutputDto>>> GetAll()
|
||||||
{
|
{
|
||||||
var utilisateurs = await _repositoryUtilisateur.GetAllAsync();
|
var utilisateurs = await _repositoryUtilisateur.GetAllAsync();
|
||||||
return new ResponseDataModel<List<Utilisateur>>
|
var utilisateursOutputDto = _mapper.Map<List<UtilisateurOutputDto>>(utilisateurs);
|
||||||
|
return new ResponseDataModel<List<UtilisateurOutputDto>>
|
||||||
{
|
{
|
||||||
Success = true,
|
Success = true,
|
||||||
StatusCode = 200,
|
StatusCode = 200,
|
||||||
Data = utilisateurs,
|
Data = utilisateursOutputDto,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IResponseDataModel<Utilisateur>> GetById(int id)
|
public async Task<IResponseDataModel<UtilisateurOutputDto>> GetById(int id)
|
||||||
{
|
{
|
||||||
var utililisateur = await _repositoryUtilisateur.GetByIdAsync(id);
|
var utililisateur = await _repositoryUtilisateur.GetByIdAsync(id);
|
||||||
return new ResponseDataModel<Utilisateur>
|
var utilisateurOutput = _mapper.Map<UtilisateurOutputDto>(utililisateur);
|
||||||
|
return new ResponseDataModel<UtilisateurOutputDto>
|
||||||
{
|
{
|
||||||
Success = true,
|
Success = true,
|
||||||
StatusCode = 200,
|
StatusCode = 200,
|
||||||
Data = utililisateur,
|
Data = utilisateurOutput,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IResponseDataModel<UtilisateurOutputDto>> Login(UtilisateurLoginDto utilisateurInput)
|
public async Task<IResponseDataModel<UtilisateurOutputDto>> Login(UtilisateurLoginDto utilisateurInput)
|
||||||
{
|
{
|
||||||
|
var validation = new UtilisateurCreateValidator();
|
||||||
|
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);
|
var utilisateur = await _repositoryUtilisateur.GetByEmailAsync(utilisateurInput.Email);
|
||||||
|
|
||||||
if (utilisateur == null)
|
if (utilisateur == null)
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
using FluentValidation;
|
||||||
|
using ldap_cesi.DTOs.Inputs;
|
||||||
|
|
||||||
|
namespace ldap_cesi.Validator.Utilisateur;
|
||||||
|
|
||||||
|
public class UtilisateurCreateValidator : AbstractValidator<UtilisateurLoginDto>
|
||||||
|
{
|
||||||
|
public UtilisateurCreateValidator()
|
||||||
|
{
|
||||||
|
RuleFor(x => x.Email)
|
||||||
|
.NotEmpty().WithMessage("L'email est requis.")
|
||||||
|
.EmailAddress().WithMessage("L'email n'est pas valide.");
|
||||||
|
|
||||||
|
RuleFor(x => x.MotDePasse)
|
||||||
|
.NotEmpty().WithMessage("Le mot de passe est requis.")
|
||||||
|
.MinimumLength(6).WithMessage("Le mot de passe doit contenir au moins 6 caractères.");
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,8 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="14.0.0" />
|
<PackageReference Include="AutoMapper" Version="14.0.0" />
|
||||||
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
||||||
|
<PackageReference Include="FluentValidation" Version="11.11.0" />
|
||||||
|
<PackageReference Include="FluentValidation.AspNetCore" Version="11.3.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.2" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.2" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.2" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.2" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.2" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.2" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user