Refactoring
This commit is contained in:
30
src/main/java/com/lions/dev/config/OpenAPIConfig.java
Normal file
30
src/main/java/com/lions/dev/config/OpenAPIConfig.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.lions.dev.config;
|
||||
|
||||
import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition;
|
||||
import org.eclipse.microprofile.openapi.annotations.info.Info;
|
||||
import org.eclipse.microprofile.openapi.annotations.servers.Server;
|
||||
|
||||
import jakarta.ws.rs.core.Application;
|
||||
|
||||
/**
|
||||
* Configuration OpenAPI pour l'API AfterWork.
|
||||
*
|
||||
* Cette classe configure les métadonnées OpenAPI et le serveur de base
|
||||
* pour que Swagger UI génère correctement les URLs avec le root-path.
|
||||
*/
|
||||
@OpenAPIDefinition(
|
||||
info = @Info(
|
||||
title = "AfterWork API",
|
||||
version = "1.0.0",
|
||||
description = "API REST pour l'application AfterWork - Gestion d'événements, réseaux sociaux et messagerie"
|
||||
),
|
||||
servers = {
|
||||
@Server(
|
||||
url = "https://api.lions.dev/afterwork",
|
||||
description = "Serveur de production"
|
||||
)
|
||||
}
|
||||
)
|
||||
public class OpenAPIConfig extends Application {
|
||||
// Classe de configuration OpenAPI
|
||||
}
|
||||
19
src/main/java/com/lions/dev/dto/PasswordResetRequest.java
Normal file
19
src/main/java/com/lions/dev/dto/PasswordResetRequest.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.lions.dev.dto;
|
||||
|
||||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
public class PasswordResetRequest {
|
||||
|
||||
@NotBlank(message = "L'email est obligatoire")
|
||||
@Email(message = "Format d'email invalide")
|
||||
private String email;
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -251,4 +251,16 @@ public class UsersService {
|
||||
System.out.println("[LOG] Utilisateur trouvé avec l'email : " + email);
|
||||
return userOptional.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Recherche un utilisateur par son email (retourne null si non trouvé).
|
||||
* Utilisé pour les opérations où on ne veut pas lever d'exception si l'utilisateur n'existe pas.
|
||||
*
|
||||
* @param email L'email de l'utilisateur à rechercher.
|
||||
* @return L'utilisateur trouvé ou null si non trouvé.
|
||||
*/
|
||||
public Users findByEmail(String email) {
|
||||
Optional<Users> userOptional = usersRepository.findByEmail(email);
|
||||
return userOptional.orElse(null);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user