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