Refactoring

This commit is contained in:
dahoud
2026-01-24 09:33:59 +00:00
parent c5a65bab5b
commit 9d5e388efa
8 changed files with 166 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
package com.lions.dev.resource;
import com.lions.dev.dto.PasswordResetRequest;
import com.lions.dev.dto.request.users.UserAuthenticateRequestDTO;
import com.lions.dev.dto.request.users.UserCreateRequestDTO;
import com.lions.dev.dto.response.users.UserAuthenticateResponseDTO;
@@ -17,8 +18,10 @@ import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
import org.jboss.logging.Logger;
@@ -273,4 +276,46 @@ public class UsersResource {
}
}
/**
* Endpoint pour demander une réinitialisation de mot de passe par email.
*
* @param request Le DTO contenant l'email de l'utilisateur.
* @return Une réponse HTTP indiquant que l'email a été envoyé (ou non, pour ne pas révéler si l'email existe).
*/
@POST
@Path("/forgot-password")
@Operation(summary = "Demander une reinitialisation de mot de passe par email",
description = "Envoie un email de reinitialisation si un compte existe avec cet email")
@APIResponse(responseCode = "200", description = "Email de reinitialisation envoye si le compte existe")
@APIResponse(responseCode = "400", description = "Email invalide")
public Response requestPasswordReset(@Valid PasswordResetRequest request) {
LOG.info("Demande de reinitialisation de mot de passe pour l'email : " + request.getEmail());
try {
// Rechercher l'utilisateur par email
Users user = userService.findByEmail(request.getEmail());
if (user != null) {
// TODO: Generer un token de reset et l'envoyer par email
// Pour l'instant, on retourne success pour ne pas reveler si l'email existe
// String resetToken = generateResetToken();
// emailService.sendPasswordResetEmail(user.getEmail(), resetToken);
LOG.info("Utilisateur trouve, email de reinitialisation devrait etre envoye : " + request.getEmail());
} else {
LOG.info("Aucun utilisateur trouve avec cet email (ne pas reveler) : " + request.getEmail());
}
// Toujours retourner 200 pour ne pas reveler si l'email existe
return Response.ok()
.entity(Map.of("message", "Si un compte existe avec cet email, un lien de reinitialisation a ete envoye"))
.build();
} catch (Exception e) {
LOG.error("Erreur lors de la demande de reinitialisation de mot de passe", e);
// Toujours retourner 200 pour ne pas reveler si l'email existe
return Response.ok()
.entity(Map.of("message", "Si un compte existe avec cet email, un lien de reinitialisation a ete envoye"))
.build();
}
}
}