Si comme moi vous utilisez le plugin « accès restreint » avec des visiteurs identifiés [1], vous risquez alors d’avoir la même question :
« Comment je fais pour changer le mot de passe barbare ? »
Ce plugin est la réponse et vous permettra de fabriquer une page de modification de mot de passe.
Comment ça marche ?
Ce plugin s’appuie sur la fonctionnalité de « mot de passe » oublié en « court-circuitant » l’étape saisie d’adresse courriel puis clique sur le lien envoyé. Lors de l’appel à la balise #URL_NOUVMDP, la zone « cookie_oubli » est initialisée, ce qui correspond à la fonctionnalité de la page « oubli de mot de passe ». Puis l’URL qu’aurait donné l’envoi de mail est retourné par la balise.
Mise en œuvre
La mise en œuvre est assez simple, une nouvelle balise est créée #URL_NOUVMDP à la quelle vous précisez la page de modification du mot de passe. Cette page est celle dans le courriel d’oublis de mot de passe.
Si vous omettez la page la valeur par défaut sera la page de mot de passe pour SPIP 2.0.3 soit ’spip_pass’ .
Donc #URL_NOUVMDP & #URL_NOUVMDP{’spip_pass’} sont équivalents.
Exemple
Dans mon menu, si l’utilisateur est connecté alors alors on lui propose un lien de modification du mot de passe à l’aide du code suivant :
[(#SESSION{id_auteur}|?{' '})
<a href="[(#URL_PAGE{Modif_MdP_Public})]">Modifier mot de passe</a>
]
Dans cette page Modif_MdP_Public, j’explique à l’utilisateur son action et lui demande de la confirmer à l’aide du code suivant :
Version SPIP 2.0 balise #SESSION
[Vous êtes connecté en tant que<br />'<b>(#SESSION{'nom'})</b>' <br />
Etes vous sur de vouloir changer de mot de passe ?<br />
<a href="#URL_NOUVMDP">OUI</a>
<a href="#URL_PAGE{sommaire}">NON</a>]
Version SPIP 1.9x balise #AUTEUR_SESSION (dans le plugin)
[Vous êtes connecté en tant que<br />'<b>(#AUTEUR_SESSION{'nom'})</b>' <br />
Etes vous sur de vouloir changer de mot de passe ?<br />
<a href="#URL_NOUVMDP">OUI</a>
<a href="#URL_PAGE{sommaire}">NON</a>]
Notes
N’oubliez surtout pas dans la page où vous utilisez la balise de ce plug-in de déactiver le cache avec :
#CACHE{0}
Historique
Version 0.4 : Génération GUID dans le plug-in pour palier à des cas de bugs quand ’alea_futur’ est vide dans la fiche utilisateur
Version 0.3 : Correction pour fonctionnement 2.0
Version 0.2 : Adaptation pour version 1.9 et version 2.0 (KO pour 2.0)
Version 0.1 : Pour version 2.0 uniquement
Remerciements
Marjorie pour ses tests en version 0.2.
Discussions par date d’activité
10 discussions
Bonjour,
Est-ce que quelqu’un a essayé ce plugin avec SPIP 3 ? Ou aurait une alternative pour permettre aux visiteurs de modifier leur mot de passe ?
Merci d’avance,
Répondre à ce message
Bonjour,
Le plugin fonctionne-t-il avec SPIP 2.1.12 ?
Je n’arrive pas à le faire fonctionner correctement.
Je peux faire la manip une fois, si je vide le cache avant uniquement. Ensuite, impossible de changer le mot de passe une seconde fois.
a+
Répondre à ce message
Marc,
A priori la balise n’a pas fonctionnée.
Peux tu vérifié que l’URL est bien :
http://[tonsite]/spip.php ?page=spip_pass&p=BAEC.....850D91
Où BAEC.....850D91 représente le lien avec la fiche utilisateur.
Si tu as une URL du type http://[tonsite]/spip.php ?page=spip_pass&p=
c’est que la génération de l’identifiant n’a pas marcher. Utilise la nouvelle version V0.4 que j’avais pas eu le temps de valider ailleur que chez moi.
Ca devrait peut-etre résoudre ton problème.
Répondre à ce message
Bonjour, j’ai installé ce plugin sur un spip 209 et n’ai probablement pas compris à quoi il servait !! En effet, en suivant les instructions, lorsque j’arrive sur la page modif_mdp.html que j’ai crée, et inséré le code proposé
en cliquant sur ’OUI’, on arrive sur la page de spip, spip_pass, où il est demandé, non pas un nouveau mot de passe, mais de saisir une adresse mail pour recevoir un nouveau mot de passe ...
Cela fait donc double emploi avec le lien « mot de passe oublié » sur le formulaire d’identification ...
Ai-je raté quelque chose ? Merci.
Marc
Répondre à ce message
Bonjour,
Merci pour ce plugin.
Je l’ai installé sur l’un de mes sites de test mais si quelqu’un change son mdp, lorsque quelqu’un d’autre veut changer le sien, il a le message :
Erreur : ce code ne correspond à aucun des visiteurs ayant accès à ce site.
Si je vide le cache dans l’espace privé ou si je recalcule ma page avant de cliquer sur « chnger de mot de passe », le pb ne se pose pas.
J’ai mis dans mon fichier auteur.html qui contient le code
[(#SESSIONid_auteur|==#ID_AUTEUR| ?’ ’)
]
sur la première ligne :
#CACHE0
Si par exemple, après avoir vidé le cache, je m’identifie en tant que auteur 1 et que j’appelle la page spip.php ?auteur1, on me propose bien de changer de mot de passe. Je clique dessus et le formulaire apparait pour le changer. Ca marche...
Si ensuite je me déconnecte en tant qu’auteur 1 et m’identifie en tant qu’auteur2, en allant sur spip.php ?auteur2, on me propose bien de changer de mot de passe mais si je clique dessus, j’ai le message d’érreur ci-dessus.
Si par contre entre les 2 essais, je vide le cache, ça marche (le formulaire apparait plutôt que le message d’erreur, quand je clique sur « le modifier »)
C’est comme si il ne prenait pas en compte la commande #CACHE0. Auriez-vous une explication ?
(A noter que ce pb se pose que j’ai sélectionné la lame du CS « pas de cache » ou pas)
Merci pour votre aide
Boby
PS : je suis en 1.92g
Répondre à ce message
Tout d’abord ce que je n’avais pas écrit avant (mais qui est important) : merci pour ce morceau de code.
J’administre un site d’association gérant des accès restreints où les visiteurs identifiés sont des adhérents. Pour la raison pratique déjà évoquée dans ce forum, mais aussi pour des raisons éthiques et de confidentialité, je pense que les visiteurs doivent avoir le doit de choisir et de changer leur mot de passe. Une « lacune » de spip est donc comblée.
Sur le sujet qui m’intéressait, je confirme que c’est bien la première ligne trouvée de la table auteurs correspondant à l’adresse électronique fournie qui est utilisée (pas forcément l’auteur le plus ancien).
Si deux personnes utilisent la même adresse électronique, ça risque donc de créer quelques surprises. Je ne connais pas les raisons qui conduisent à cette « tolérance » de spip sur les adresses électroniques (cette tolérance pourrait être activée ou non par une case à cocher).
En passant par l’intermédiaire d’un modérateur pour les inscriptions ou en modifiant le formulaire de spip, on peut recopier l’adresse électronique dans le champ login : lorsque deux logins sont identiques lors de la création, spip n’envoie aucun message d’erreur mais la deuxième personne a son login vide et apparait dans la liste avec une petite croix rouge ; c’est une façon d’assurer son unicité.
Répondre à ce message
Bon ce n’est certainement pas le bon forum. Il y a un problème de conception (pas du plugin, de spip) ou alors y a un truc qui m’échappe.
Dans la base des auteurs/visiteurs spip accepte que la même adresse electronique soit utilisée plusieurs fois avec des personnalités différentes.
Quand la procédure de changement de mot de passe est lancée (qu’elle soit d’origine ou modifiée par ce plugin), elle utilise l’adresse electronique et non le login ; donc : comment différencer les personnalités qui utilisent la même adresse electronique ? (en fait seule la première des personnalités à accès à la procédure)
pour répondre à :
Le plugin n’utilise pas du tout l’adresse courriel. En effet on récupère l’ID de l’utilisateur qui est dans sa session. Ceci est fait dans le code suivant :
Ensuite la zone cookie_oubli de la table auteurs est modifié pour l’utilisateur identifié par son ID. Ceci est fait dans le code suivant :
Donc le plug-in ne doit prendre en compte qu’un seul et unique utilisateur, celui qui est connecté. Je te laisse faire le teste.
Tu devrais facilement pouvoir vérifier cela en consultant la table auteurs et ses changements lors que le lien pour changer ton mot de passe apparait car à ce moment la l’opération est déjà faite dans la base.
Pour répondre à ta question ou du moins te donner des pistes, le lien reçu par mail contient la zone cookie_oubli donc un fois ton mail reçu tu peux aller consulter la table auteur pour identifier de quel auteur on parle.
Je pense, sans en être sur, que lorsque l’on fait appel à la fonction SPIP d’oubli de mot de passe, il recherche la première entrée. Première au sens de la base de donnée, c’est à dire que cela dépend des index du stockage de la base et que cela peut changer dans le temps. L’idéal serait de faire une boucle et d’envoyer plusieurs mails si plusieurs comptes.
Taryck.
Répondre à ce message
au départ,j’avais juste exec= puis rien dans l’adresse (je suis en 2.0.5), désormais j’ai « exec=pass », on progresse. Par contre, ça me dit « fichier pass introuvable » désormais... arf....
Cela signifie que la modification de la base de donnée n’a pas eu lieu.
Votre url contient bien un « p=xxxx » ?
Avez vous un accès à la base de donnée ? phpadmin par exemple ?
Le plus simple serait d’échanger par mail des captures écrans.
Taryck.
oui je confirme, il y a bien un p=.... (plus un long code de chiffres avec un point).
Et les autres questions :
Avez vous un accès à la base de donnée ? phpadmin par exemple ?
Le plus simple serait d’échanger par mail (taryck@bensiali.net) des captures écrans.
Car sinon je ne peux pas analyser le problème...
Taryck.
Il y a semble t’il un erreur dans les fonctions du plugin en ligne 81 du moins dans ma version du plugin :
$p->param[0][2][0]->texte = $p->param[0][2][0]->texte. "&action=".$p->param[0][1][0]->texte;
A remplacer par
$p->param[0][2][0]->texte = $p->param[0][2][0]->texte. "&page=".$p->param[0][1][0]->texte;
Sinon sous SPIP 2.0.3 je ne passais pas :)
Le code contient les 2 versions de code.
1 pour SPIP 1.9.x et une pour SPIP 2.x
A priori il y a quelques problème de détection des versions dans certains cas.
Avec les versions dont je dispose cela fonctionne, à voir donc avec les versions « plus exotiques ».
Taryck.
Grâce aux tests fait par Marjorie les corrections ont été apporté en version 0.3 pour que cela marche pour SPIP 2.0 et SPIP 1.9
Répondre à ce message
Pour les erreurs 404 qui indiquent que l’url générée n’est pas valide, il faut comparer ses url avec l’url « normale ».
Pour se faire, utiliser la fonctionalité « oublis de mot de passe » généralement sur la page de login. Une fois le e-mail recu comparer les url (celle dans l’e-mail et celle généré par la balise).
Pour SPIP 1.9.x l’url devrait etre de type :
http://www.xxx /spip.php ?p=yyyy.zzz& action=pass
Pour SPIP 2.0.x l’url devrait etre de type :
http://www.xxx /spip.php ?p=yyyy.zzz& page=spip_pass
Donc version 1.9 on utilise action en version 2.0 c’est page
Si votre url dans l’e-mail est :
http://www.xxx /spip.php ?p=yyyy.zzz& page=spip_password
Il vous faudra utiliser la balise : #URL_NOUVMDP{’spip_password’} au lieu de #URL_NOUVMDP
Répondre à ce message
Arf, ça ne marche pas chez moi... (spip 2.0.5). J’ai réussi à installer la page on l’on doit cliquer sur oui ou non, mais si on clique sur oui... on a une erreur 404...
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |