Voici, à titre indicatif, une manière de séparer le formulaire de modification du mot de passe, du formulaire de changement de coordonnées.
Avantage : le processus est plus clair, mieux cadré pour le client
Inconvénient : il faut intervenir dans le code de Thelia, ce qui est assez contraignant vis-à-vis des mises à jour futures
1. Créer les fichiers suivants :
- mdp_modifier.php
- mdp_modifier.html (formulaire initialement présent dans le template compte_modifier.html)
- mdp_modifiererr.php
- mdp_modifiererr.html (reprise du formulaire + message d'alerte indiquant que le client a fait une erreur)
- mdp_modifierok.php
- mdp_modifierok.html (comportant un message convivial indiquant que la modification du mot de passe s'est bien déroulée)
2. Dans action.php, ajouter à la fin du fichier la fonction suivante :
function mychmdp($motdepasse1, $motdepasse2) {
$client = New Client();
$client->charger_id($_SESSION['navig']->client->id);
if ( $motdepasse1 == $motdepasse2 && strlen($motdepasse1)>5 ) {
$client->motdepasse = $motdepasse1;
$client->crypter();
$client->maj();
$_SESSION['navig']->client = $client;
redirige("mdp_modifierok.php");
} else {
$_SESSION['navig']->formcli->motdepasse = "";
redirige("mdp_modifiererr.php");
}
}
3. Dans moteur.php, dans la partie :
// Actions
switch($action){
...
ajouter la ligne :
case 'mychmdp' : mychmdp($motdepasse1, $motdepasse2); break;
et enfin dans les formulaires des templates mdp_modifier.html et mdp_modifiererr.html, remplacer "modifiercompte" par "mychmdp" :
<p><input type="hidden" name="action" value="mychmdp" /></p>