[PluXml 5.8] Récupération de mot de passe

HarukaHaruka PluXml Project Manager
Bonjour à tous,

Je vous propose de tester et de me faire vos retours sur une nouvelle fonctionnalité de la prochaine version de PluXml : la récupération de mot de passe.

4jqkWI5T4W81.png

La solution que j'ai implémenté utilise la fonction mail() de php pour envoyer par e-mail un lien contenant un token et qui permet de changer son mot de passe. Cela implique que votre hébergeur soit paramétré de tel sorte que l'envoi de mail soit possible.

Télécharger PluXml 5.8 (branche develop)

Le mail est construit à partir d'un template visible ici. Une option permet d'activer ou de désactiver cette fonctionnalité, depuis l'écran "Configuration avancée" (activé par défaut).

Réponses

  • +1

    Je teste un peu plus tard

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mars 2019 modifié
    Tout d'abord, même si cela n'a rien à voir avec le sujet, j'ai la désagréable sensation de lire un message d'erreur dans les logs de Apache :
    [== tail -f /var/log/apache/test-error.log  ==]
    PHP Deprecated:  Function create_function() is deprecated in /home/www/test/PluXml-2019/core/admin/medias.php on line 93, referer: https://test.lan/PluXml-2019/core/admin/
    
    Je fais mes tests sous "Ubuntu 18.04.2 LTS" et c'est donc PHP 7.2. Et pas de chance la fonction create_function() est obsolète maintenant :
    http://php.net/manual/fr/function.create-function.php
    Donc à bannir de façon définitive
    Fin de l'aparté.

    L'idée est généreuse et pallie à un manque de PluXml que j'ai remplacé depuis longtemps avec mon vieux plugin lostpassword publié en 2014.

    AMHA, à l'installation, il faudrait rendre obligatoire l'adresse mail pour l'administrateur. Au moins pour lui envoyer des messages d'alerte.

    Pour trouver une adresse mail ou un login, les essais sont quasi illimités : un grand compteur, pas de temps de réponse qui s'allonge. Donc, vive l'attaque par force brute.

    Pour ceux qui ont la patience de faire 100 tentatives en 3 minutes et se retrouvent bannis. Pas de souci : effacer tous les cookies de votre site, hyper facile avec Firefox, et c'est "same player shoots again" comme en haut des flippers. ]:D

    Pour éviter cela, c'est sur le serveur qu'il faut enregistrer le compteur pour une adresse IP donnée et pas demander au méchant qui toque à la porte de tenir à jour le compteur d'essais.

    Mon plugin réclame à la fois un login et une adresse mail valide sinon c'est erreur et cela limite un peu les attaques.

    Pour éviter les aller-retours entre navigateur et serveur, il utilise une checkbox pour afficher un input type="mail" et désactiver la demande de mot de passe.

    Il faudrait penser à utiliser les fonctions de filtrage des $_POST de PHP :
    http://php.net/manual/fr/function.filter-input.php
    J'utilise systématiquement cela dans mes plugins. Cela augmente la sécurité.
    "!empty($_GET" se remplace par "filter_has_var(INPUT_GET, 'p')"
    Vérifier qu'on poste une adresse mail valide :
    filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)
    Tester si on a posté une expression booléenne à vrai ( type checkbox ):
    filter_input(INPUT_POST, 'lostpassword', FILTER_VALIDATE_BOOLEAN)
    La courbe d'apprentissage peut sembler raide pour certains, surtout pour matcher des expressions régulières (je maitrise maintenant), mais cela paye après.

    Il serait bienvenue de pouvoir activer le captcha sur le formulaire d'authentification.

    Mais cela ne vaut pas la double authentification : plugins kzU2f et kzOtPHP.

    Dans config.php et core/lib/class.plx.Admin.php, core/lib/config.php abandonner la fonction define et utiliser des constantes :
    [== PHP ==]
    <?php const PLX_CONFIG_PATH = 'data/configuration/'; ?>
    <?php const PLX_ADMIN =  true; ?>
    <?php const PLX_DEBUG =  true; ?>
    <?php const PLX_VERSION = '5.8-alpha.1'; ?>
    <?php const PLX_ROOT = '../../'; ?>
    // Etc, ...
    

    Désolé d'être trop bavard.
  • cpalocpalo Member
    Bonjour,

    Je teste ça ce matin.
    Mais cela manquait...

    Cordialement
  • cpalocpalo Member
    Testé avec deux profils ( dont l'administrateur) eet deux adresses mail différentes
    Lorsqu'on met le pseudo pour récupérer le mot de passe,
    Veuillez saisir votre login ou adresse e-mail pour recevoir un nouveau mot de passe
    Je remets le pseudo
    Erreur lors du changement de mot de passe
    Je saisis l'adrese mail...
    a-priori il accepte, mais je ne reçois aucun mail.
    D'ailleurs il faudrait rendre obligatoire la saisie d'une adresse mail valide avant de pouvoir enregistrer un profil.
    Cordialement
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Oups, petit oubli :

    Dans le panneau de config de chaque utilsateur, il faudrait ajouter un bouton pour tester son adresse mail.
  • C'est un mot de passe qui est envoyé ou un lien pour créer un nouveau mot de passe ?
    La différence est importante je pense.
  • HarukaHaruka PluXml Project Manager
    Jerry Wham a écrit:
    C'est un mot de passe qui est envoyé ou un lien pour créer un nouveau mot de passe ?
    La différence est importante je pense.

    Je suis d'accord avec toi. Dans cette première version c'est un nouveau mot de passe qui est envoyé par mail. Mais j'aimerais à terme envoyer un lien permettant de créer un nouveau mot de passe.
  • HarukaHaruka PluXml Project Manager

    Hello,

    Peut-être un problème avec ton hébergement. PluXml vérifie seulement si la fonction mail de php est disponible. Si tu ne reçois pas le mail, c'est soit un problème avec l'adresse mail, soit le serveur mail qui n’envoie pas le courrier. Par exemple Exim4, que j'utilise en local et sur mon blog.

    Par ailleurs, dans la dernière version sur github, j'ai rendu obligatoire, la saisie d'un mail à la création d'un profil, mais également à l'installation de PluXml (création de l'administrateur) : https://github.com/pluxml/PluXml/tree/feature/lostpassword

  • HarukaHaruka PluXml Project Manager
    juin 2019 modifié

    Bonjour,

    J'aurais besoin d'un coup de main, pour vérifier et compléter les manques de traduction, de cette nouvelle fonctionnalité, dans les différentes langues supportées par PluXml.

    Si vous souhaitez participer, j'ai initié un framapad : https://annuel.framapad.org/p/pluxml-lost-password

    Vous pouvez également poster directement sur le forum vos traductions, ou me les envoyer par e-mail.

  • HarukaHaruka PluXml Project Manager

    Bonjour,

    La version de développement PluXml 5.8 (branche develop) a été mise à jour. Désormais, la fonctionnalité "mot de passe oublié", permet l'envoi d'un e-mail qui contient un lien contenant un token et qui permet de changer soit même son mot de passe.

    A télécharger ici : https://github.com/pluxml/PluXml/tree/develop

  • SudwebdesignSudwebdesign Member
    juillet 2019 modifié

    Jusque ici tout va bien (sur mon serveur local)

    Il y a une disparité de la taille des images (icones) de la page des plugins "core/admin/parametres_plugins.php"

    elles ont un max-width: initial !important; alors que ds la v5.7 il est fixé a 48px, ce qui permet aux images "icone.png" trops grandes d'éviter de rendre la colonne trop large.

    theme.css v5.7

    #plugins-table img, #medias-table img {
       max-width: 48px;
       padding-top: 7px;
    }
    

    theme.css v5.8

    #plugins-table img, #medias-table img {
       max-width: initial !important;
       vertical-align: bottom;
    }
    


    Peut-être est-ce voulu mais si l'image d’icône est très très grande (genre 800 ou 1024px de large) on ne voit plus les colonnes suivantes ...

    Pour voir l'effet, il suffit juste de changer l'image d'un plugin avec une grande largeur

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • HarukaHaruka PluXml Project Manager

    Merci beaucoup pour ce retour.

    J'ai remis les règles CSS de la version 5.7. Elles avaient été changés par ce commit : https://github.com/pluxml/PluXml/commit/60e20595d0eeacb730c2a23cb94f9eb4a92cf528#diff-9a7716ce9c6ef7c0979684f159357200

  • SudwebdesignSudwebdesign Member
    juillet 2019 modifié

    @P3ter

    super on évite une régression,

    Au passage superbe idée de déplacer en haut le lors de la modif d'un article


    Mais l'ancre du lien "Éditer" mène au champ #articleLink alors qu'il est non modifiable, il serai préférable que ce lien envois l'internaute sur le champ #id_url qui lui l'est ;)


    [édit] *réalisé grâce au bon plugin de @bazooka07 lesFables avec une légère Mise À Jour

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • SudwebdesignSudwebdesign Member
    juillet 2019 modifié

    Je ne sais pas si l'on peu dire que ce soit un bogue car ça fait longtemps que c'est ainsi :)

    Voila, lors du choix de l'ordre des articles ds les paramètres d'affichages, cela joue aussi sur l'affichage de la page tag.php du thème graphique. Par exemple, si le mode alphabétique est choisit, les deux sont ds cet ordre.


    Est-il possible qu'il y est l'option tri des articles (Mot Clé) ds les paramètres d'affichage de la prochaine mouture?

    Et/ou alors comment Faire pour changer l'ordre des articles de la page tag

    Cela servirai @SieurVLD en toutes probabilités et bien a d'autres 🤩


    [édit] @P3ter pour allez plus loin (une idée)

    Cela pourrait-être ds le moteur au préchauffage comme pour les catégories

    	public function prechauffage() {
    ···
               elseif($this->get AND preg_match('/^tag\/([a-z0-9-]+)/',$this->get,$capture)) {
    ···
               $this->tri = $this->aConf['triTag']; # Recuperation du tri des articles en mode tag
    

    et le bon html ds parametres_affichage.php suffirait-il?

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • HarukaHaruka PluXml Project Manager

    J'ai modifier l'ancre sur le lien "Editer", je suis d'accord avec toi. J'ai également supprimé le champ #articleLink qui peut porter à confusion avec le nouveau champ en haut de page, et le champ URL dans la sidebar.

    Concernant le tri des articles sur la page des tag.php, j'ai créé une issue sur Github : https://github.com/pluxml/PluXml/issues/327. Je vais voir comment je peux l'intégrer. Je pense que je vais partir sur ton idée d'ajouter une option "tri des articles (Mot Clé)".

  • Entre parenthèses il y a (éditer) ne pourrrait-on pas l'enlever car il porte à confusion puisqu'inutile à moins qu'il offre une possibilité. Mais dans ce cas j'aimerai bien la connaître.

    Ne pourrait-on pas laisser le chapo affiché par défaut. Car pour rédacteurs "débutants" ils oublient très fréquemment de le remplir?

    A moins de passer par un des plugins champPlus ou autre, ou de passer en mode source dans ckeditor, est-ce qu'on pourrait avoir l'équivalent d'un chapo dans les pages statiques ( mais qui n'aurait pas la même fonction que dans les articles). Car souvent dans les pages statiques on peut avoir un premier paragraphe de présentation et mis en page différemment.

    Merci pour tout le travail fait... la version 5.8 en développement me paraît bien prometteuse.

    Cordialement

  • HarukaHaruka PluXml Project Manager

    Le lien "(éditer)" est une ancre vers le champs "URL" dans la sidebar sur la droite. Je suis d'accord qu'on ne s'en rend pas compte visuellement quand on clic et qu'il reste quelque chose à améliorer ici.

    Pour le chapo, je me pose la même question et je réfléchi également à améliorer cette partie (ça intègre les pages statiques). Je reviens vers vous dès que j'aurais un peu plus de concret, mais je ne sais pas encore si ça va être pour la version 5.8.


  • Je n'ai pas testé cette version mais j'ai regardé un peu le code source et ça me semble plutôt bien. Le seul bémol est la gestion des hashs des mots de passe qui est obsolète.

    Je te propose l'utilisation de ma classe de gestion des mots de passe https://framagit.org/jerrywham/passwordtools

    Mais elle nécessite l'utilisation de php 5.5+ car elle utilise des fonctions natives de php disponibles que depuis la version 5.5. La version 7.0 est quand même plus sure...

    Je te réponds ici car je ne peux plus sur github. D'ailleurs, il serait peut-être bien de migrer le code de pluxml vers une forge libre (framagit par exemple) en conservant une copie sur github. On ne sait jamais ce qu'il peut arriver depuis que Micro$oft a acheté cette dernière.

  • HarukaHaruka PluXml Project Manager

    Merci pour ce retour Jerry.

    Je me suis effectivement basé sur les méthodes de hash déjà utilisées dans PluXml 5.7, mais qui sont effectivement obsolètes. Je pense faire quelques changements pour utiliser mcrypt, un peu comme dans ta class passwordtools. Merci pour le partage, je vais regarder ça de près.

    Concernant Github, je me suis déjà posé la question de mettre à disposition les sources de PluXml sur une instance Gitlab, tel que celle de Framasoft, mais sais-tu si il est possible de synchroniser automatiquement les deux plateformes ? Je vois bien comment pusher sur les deux repos à partir du même workspace, mais ce n'est pas idéal.

  • HarukaHaruka PluXml Project Manager
    septembre 2019 modifié

    Bonjour,

    J'ai complété la récupération de mot de passe, en ajoutant à PluXml la possibilité d'envoyer des mails au travers d'un serveur SMTP. Pour cela, j'ai intégré la fameuse librairie PhpMailer dans une nouvelle méthode : plxUtils::sendMailPhpMailer(). Si l'envoi de mail par SMTP est désactivé PluXml utilisera le serveur mail paramétré localement sur votre serveur (comme le faisait déjà plxUtils::sendMail()).

    Vous trouverez dans l'administration -> configuration avancée, de nouveaux champs permettant de configurer l'envoie de mail par un serveur SMTP.

    L'affichage des boutons radio est réalisé à partir d'une nouvelle méthode : plxUtils::printInputRadio().

    Comme d'habitude, c'est disponible sur la branche develop : https://github.com/pluxml/PluXml/tree/develop

Connectez-vous ou Inscrivez-vous pour répondre.