Fichier formulaires/changer_motdepasse.html
Ce fichier utilise la balise #SAISIE, donc il faudra activer le plugin saisies https://plugins.spip.net/saisies.html.
Il est facile toutefois de remplacer le recours à ces balises par de simples champs HTML input.
<a name="#FORM-#ENV{id_auteur,nouveau}"></a>
<div class="formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_auteur,nouveau}"
style='margin-top:1em'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur}) <:info_recommencer:></p>]
[(#ENV{editable})
<form method='post' action='#ENV{action}'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE
<input type='hidden' name='id_auteur' value='#ENV{id_auteur}' />
[<input type='hidden' name='redirect' value='(#ENV**{redirect})' />]
<h3>Changer votre mot de passe</h3>
<div class='row' id='row_password'>
<div class='col-md-6'>
#SET{really_avoid_autocomplete,readonly="readonly" onfocus="this.removeAttribute('readonly');"}
[(#SAISIE{input,new_pass,
label=<:entree_nouveau_passe:>,
type=password,
class=password,
attributs=#GET{really_avoid_autocomplete},
autocomplete=off})]
</div>
<div class='col-md-6'>
[(#SAISIE{input,new_pass2,
label=<:info_confirmer_passe:>,
type=password,
class=password,
attributs=#GET{really_avoid_autocomplete},
autocomplete=off})]
</div>
</div>
[(#REM) ici normalement ajouter les saisies supplementaires : extra et autre, a cet endroit
NON on en veut pas ! Car on veut maîtriser la mise en page.
<!-- e x t r a -->
]
<p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
</div></form>
][(#REM) fin editable]
</div>
Fichier formulaires/changer_motdepasse.php
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('formulaires/editer_auteur');
/**
* @param string $id_auteur
* @param string $retour
* @return array $valeurs
*
*/
function formulaires_changer_motdepasse_charger_dist($id_auteur='', $retour='') {
include_spip('inc/session');
if (!$id_auteur) {
$id_auteur = session_get('id_auteur');
if (!$id_auteur) {
return array();
}
}
$valeurs = formulaires_editer_auteur_charger_dist($id_auteur, $retour, '', 'auteurs_edit_config', array(), '');
$valeurs['_action'][0] = 'changer_motdepasse';
if ($id_auteur and (session_get('id_auteur') == $id_auteur) and ($valeurs['statut'] != '5poubelle')) {
$valeurs['editable'] = true;
}
return $valeurs;
}
/**
* @param string $id_auteur
* @param string $retour
* @return array
*/
function formulaires_changer_motdepasse_verifier_dist($id_auteur='', $retour=''): array {
if (!$id_auteur) {
$id_auteur = session_get('id_auteur');
if (!$id_auteur) {
return array();
}
}
$erreurs = array();
$new_pass = trim(_request('new_pass'));
if (strlen($new_pass) < _PASS_LONGUEUR_MINI) {
$erreurs['new_pass'] = _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI));
}
$new_pass2 = trim(_request('new_pass2'));
if (strlen($new_pass2) < _PASS_LONGUEUR_MINI) {
$erreurs['new_pass2'] = _T ('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI));
}
if (!count($erreurs) and ($new_pass !== $new_pass2)) {
$erreurs['new_pass2'] = _T ('info_passes_identiques');
}
return $erreurs;
}
/**
* @param string $id_auteur
* @param string $retour
* @return array
*/
function formulaires_changer_motdepasse_traiter_dist($id_auteur='', $retour='') {
// refuser_traiter_formulaire_ajax(); // décommenter si c'est mieux
if (!$id_auteur) {
$id_auteur = session_get('id_auteur');
if (!$id_auteur) {
return [];
}
}
$id_auteur = (int) $id_auteur;
// courcircuiture des pré et postraitements de editer_auteur_traiter, nuisibles ici.
include_spip('action/editer_auteur');
$erreur = auteur_modifier($id_auteur);
$redirect = ['redirect' => $retour];
if ($erreur) {
return $redirect + ['message_erreur' => $erreur];
}
else {
return $redirect + ['message_ok' => 'Ok. Votre nouveau mot de passe a bien été enregistré.'];
}
}