Refactoring - Bonne version améliorée

This commit is contained in:
dahoud
2026-02-05 14:14:45 +00:00
parent a515963a4a
commit dd4dbe111e
56 changed files with 4274 additions and 2142 deletions

View File

@@ -3,6 +3,7 @@ package com.lions.dev.resource;
import com.lions.dev.dto.PasswordResetRequest;
import com.lions.dev.dto.request.users.AssignRoleRequestDTO;
import com.lions.dev.dto.request.users.SetUserActiveRequestDTO;
import com.lions.dev.dto.request.users.UpdateProfileImageRequestDTO;
import com.lions.dev.dto.request.users.UserAuthenticateRequestDTO;
import com.lions.dev.dto.request.users.UserCreateRequestDTO;
import com.lions.dev.dto.response.users.UserAuthenticateResponseDTO;
@@ -10,6 +11,7 @@ import com.lions.dev.dto.response.users.UserCreateResponseDTO;
import com.lions.dev.dto.response.users.UserDeleteResponseDto;
import com.lions.dev.entity.users.Users;
import com.lions.dev.exception.UserNotFoundException;
import com.lions.dev.service.JwtService;
import com.lions.dev.service.PasswordResetService;
import com.lions.dev.service.UsersService;
import jakarta.inject.Inject;
@@ -20,7 +22,6 @@ import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -31,6 +32,7 @@ import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
import org.jboss.logging.Logger;
/**
* Ressource REST pour la gestion des utilisateurs dans le système AfterWork.
* Cette classe expose des endpoints pour créer, authentifier, récupérer et supprimer des utilisateurs.
@@ -45,6 +47,9 @@ public class UsersResource {
@Inject
UsersService userService;
@Inject
JwtService jwtService;
@Inject
PasswordResetService passwordResetService;
@@ -102,6 +107,7 @@ public class UsersResource {
user.getEmail(),
user.getRole()
);
responseDTO.setToken(jwtService.generateToken(user));
responseDTO.logResponseDetails();
return Response.ok(responseDTO).build();
}
@@ -222,35 +228,43 @@ public class UsersResource {
LOG.info("Réinitialisation du mot de passe pour l'utilisateur avec l'ID : " + id);
userService.resetPassword(id, nouveauMotDePasse);
return Response.ok("{\"message\": \"Mot de passe réinitialisé avec succès.\"}").build();
return Response.ok(Map.of("message", "Mot de passe réinitialisé avec succès.")).build();
}
/**
* Endpoint pour mettre à jour l'image de profil de l'utilisateur.
* Accepte un JSON avec {@code profileImageUrl} (URL retournée par l'upload de médias).
* Réponse toujours en JSON (utilisateur mis à jour ou message d'erreur).
*
* @param id L'identifiant de l'utilisateur.
* @param imageFilePath Le chemin vers l'image de profil.
* @return Un message indiquant si la mise à jour a réussi.
* @param request Corps JSON : { "profileImageUrl": "https://..." }
* @return Réponse JSON : utilisateur mis à jour (200) ou message d'erreur (4xx/5xx).
*/
@PUT
@Path("/{id}/profile-image")
@Operation(summary = "Mettre à jour l'image de profil d'un utilisateur", description = "Met à jour l'image de profil d'un utilisateur.")
public String updateUserProfileImage(@PathParam("id") UUID id, String imageFilePath) {
@Operation(summary = "Mettre à jour l'image de profil d'un utilisateur", description = "Met à jour l'URL de l'image de profil (après upload). Corps JSON : profileImageUrl.")
public Response updateUserProfileImage(@PathParam("id") UUID id, @Valid @NotNull UpdateProfileImageRequestDTO request) {
try {
File file = new File(imageFilePath);
if (!file.exists()) {
LOG.error("[ERROR] Le fichier spécifié n'existe pas : " + imageFilePath);
return "Le fichier spécifié n'existe pas.";
String profileImageUrl = request.getProfileImageUrl();
if (profileImageUrl == null || profileImageUrl.isBlank()) {
return Response.status(Response.Status.BAD_REQUEST)
.entity(Map.of("message", "L'URL de l'image de profil est obligatoire."))
.build();
}
String profileImageUrl = file.getAbsolutePath();
userService.updateUserProfileImage(id, profileImageUrl); // Appel à la méthode correcte
Users updatedUser = userService.updateUserProfileImage(id, profileImageUrl.trim());
LOG.info("[LOG] Image de profil mise à jour pour l'utilisateur avec l'ID : " + id);
return "Image de profil mise à jour avec succès.";
UserCreateResponseDTO responseDTO = new UserCreateResponseDTO(updatedUser);
return Response.ok(responseDTO).build();
} catch (UserNotFoundException e) {
LOG.warn("Utilisateur non trouvé pour mise à jour image de profil : " + id);
return Response.status(Response.Status.NOT_FOUND)
.entity(Map.of("message", e.getMessage()))
.build();
} catch (Exception e) {
LOG.error("[ERROR] Erreur lors de la mise à jour de l'image de profil : " + e.getMessage());
return "Erreur lors de la mise à jour de l'image de profil.";
LOG.error("[ERROR] Erreur lors de la mise à jour de l'image de profil : " + e.getMessage(), e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity(Map.of("message", "Erreur lors de la mise à jour de l'image de profil."))
.build();
}
}