Task 1.7 - Ajout PasswordChangeDTO
- Création de PasswordChangeDTO pour les changements de mot de passe - Validation Jakarta avec @NotBlank et @Size - Documentation Javadoc complète en français - Méthodes utilitaires pour validation et cohérence - Support pour les endpoints de changement de mot de passe
This commit is contained in:
@@ -0,0 +1,188 @@
|
|||||||
|
package com.gbcm.server.api.dto.auth;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DTO pour les demandes de changement de mot de passe.
|
||||||
|
* Utilisé lorsqu'un utilisateur authentifié souhaite changer son mot de passe.
|
||||||
|
*
|
||||||
|
* @author GBCM Development Team
|
||||||
|
* @version 1.0
|
||||||
|
* @since 1.0
|
||||||
|
*/
|
||||||
|
@Schema(description = "Demande de changement de mot de passe")
|
||||||
|
public class PasswordChangeDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mot de passe actuel de l'utilisateur.
|
||||||
|
* Obligatoire pour vérifier l'identité avant le changement.
|
||||||
|
*/
|
||||||
|
@Schema(description = "Mot de passe actuel de l'utilisateur",
|
||||||
|
example = "ancienMotDePasse123",
|
||||||
|
required = true)
|
||||||
|
@JsonProperty("currentPassword")
|
||||||
|
@NotBlank(message = "Le mot de passe actuel est obligatoire")
|
||||||
|
private String currentPassword;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nouveau mot de passe choisi par l'utilisateur.
|
||||||
|
* Doit respecter la politique de sécurité des mots de passe.
|
||||||
|
*/
|
||||||
|
@Schema(description = "Nouveau mot de passe",
|
||||||
|
example = "nouveauMotDePasse123",
|
||||||
|
required = true)
|
||||||
|
@JsonProperty("newPassword")
|
||||||
|
@NotBlank(message = "Le nouveau mot de passe est obligatoire")
|
||||||
|
@Size(min = 8, max = 100, message = "Le nouveau mot de passe doit contenir entre 8 et 100 caractères")
|
||||||
|
private String newPassword;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Confirmation du nouveau mot de passe.
|
||||||
|
* Doit être identique au nouveau mot de passe.
|
||||||
|
*/
|
||||||
|
@Schema(description = "Confirmation du nouveau mot de passe",
|
||||||
|
example = "nouveauMotDePasse123",
|
||||||
|
required = true)
|
||||||
|
@JsonProperty("confirmPassword")
|
||||||
|
@NotBlank(message = "La confirmation du mot de passe est obligatoire")
|
||||||
|
@Size(min = 8, max = 100, message = "La confirmation doit contenir entre 8 et 100 caractères")
|
||||||
|
private String confirmPassword;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur par défaut.
|
||||||
|
*/
|
||||||
|
public PasswordChangeDTO() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur avec tous les paramètres.
|
||||||
|
*
|
||||||
|
* @param currentPassword le mot de passe actuel
|
||||||
|
* @param newPassword le nouveau mot de passe
|
||||||
|
* @param confirmPassword la confirmation du nouveau mot de passe
|
||||||
|
*/
|
||||||
|
public PasswordChangeDTO(String currentPassword, String newPassword, String confirmPassword) {
|
||||||
|
this.currentPassword = currentPassword;
|
||||||
|
this.newPassword = newPassword;
|
||||||
|
this.confirmPassword = confirmPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne le mot de passe actuel.
|
||||||
|
*
|
||||||
|
* @return le mot de passe actuel
|
||||||
|
*/
|
||||||
|
public String getCurrentPassword() {
|
||||||
|
return currentPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Définit le mot de passe actuel.
|
||||||
|
*
|
||||||
|
* @param currentPassword le mot de passe actuel à définir
|
||||||
|
*/
|
||||||
|
public void setCurrentPassword(String currentPassword) {
|
||||||
|
this.currentPassword = currentPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne le nouveau mot de passe.
|
||||||
|
*
|
||||||
|
* @return le nouveau mot de passe
|
||||||
|
*/
|
||||||
|
public String getNewPassword() {
|
||||||
|
return newPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Définit le nouveau mot de passe.
|
||||||
|
*
|
||||||
|
* @param newPassword le nouveau mot de passe à définir
|
||||||
|
*/
|
||||||
|
public void setNewPassword(String newPassword) {
|
||||||
|
this.newPassword = newPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne la confirmation du nouveau mot de passe.
|
||||||
|
*
|
||||||
|
* @return la confirmation du nouveau mot de passe
|
||||||
|
*/
|
||||||
|
public String getConfirmPassword() {
|
||||||
|
return confirmPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Définit la confirmation du nouveau mot de passe.
|
||||||
|
*
|
||||||
|
* @param confirmPassword la confirmation à définir
|
||||||
|
*/
|
||||||
|
public void setConfirmPassword(String confirmPassword) {
|
||||||
|
this.confirmPassword = confirmPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie si le nouveau mot de passe et sa confirmation correspondent.
|
||||||
|
*
|
||||||
|
* @return true si les mots de passe correspondent, false sinon
|
||||||
|
*/
|
||||||
|
public boolean isPasswordConfirmed() {
|
||||||
|
return newPassword != null && newPassword.equals(confirmPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie si tous les champs obligatoires sont remplis.
|
||||||
|
*
|
||||||
|
* @return true si tous les champs sont remplis, false sinon
|
||||||
|
*/
|
||||||
|
public boolean isComplete() {
|
||||||
|
return currentPassword != null && !currentPassword.trim().isEmpty() &&
|
||||||
|
newPassword != null && !newPassword.trim().isEmpty() &&
|
||||||
|
confirmPassword != null && !confirmPassword.trim().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Représentation textuelle de l'objet (sans les mots de passe pour la sécurité).
|
||||||
|
*
|
||||||
|
* @return une chaîne représentant l'objet
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PasswordChangeDTO{" +
|
||||||
|
"hasCurrentPassword=" + (currentPassword != null && !currentPassword.isEmpty()) +
|
||||||
|
", hasNewPassword=" + (newPassword != null && !newPassword.isEmpty()) +
|
||||||
|
", hasConfirmPassword=" + (confirmPassword != null && !confirmPassword.isEmpty()) +
|
||||||
|
", passwordsMatch=" + isPasswordConfirmed() +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie l'égalité avec un autre objet.
|
||||||
|
*
|
||||||
|
* @param obj l'objet à comparer
|
||||||
|
* @return true si les objets sont égaux, false sinon
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) return true;
|
||||||
|
if (obj == null || getClass() != obj.getClass()) return false;
|
||||||
|
|
||||||
|
PasswordChangeDTO that = (PasswordChangeDTO) obj;
|
||||||
|
|
||||||
|
return java.util.Objects.equals(currentPassword, that.currentPassword) &&
|
||||||
|
java.util.Objects.equals(newPassword, that.newPassword) &&
|
||||||
|
java.util.Objects.equals(confirmPassword, that.confirmPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calcule le code de hachage de l'objet.
|
||||||
|
*
|
||||||
|
* @return le code de hachage
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return java.util.Objects.hash(currentPassword, newPassword, confirmPassword);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user