Refactoring - Bonne version améliorée
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user