Bonjour,

J'ai voulu créer une page que je voulais protégé par un mot de passe.
La page se créée bien et quand je vais dessus, j'ai bien accès à la page en Accès restreint.
Je met le mot de passe que j'ai intégré dans la page, mais la page ne veux pas s'ouvrir, je suis sûr de mon mot de passe car il n'y a pas plus simple, c'est "test" ( je vous rassure, ce n'est pas le mot de passe que je vais mettre plus tard ... ;-) ).

Soit, j'ai loupé un truc, soit il y a un petit bug quelque part.
Avez-vous une petite idée SVP ?

Bonne journée,
Gérard N.

  • NemStudio18 replied to this.
  • gn1234567

    Désolé du temps de réponse, j'ai fais au mieux mais j'ai eu beaucoup de grosses galères entre perso/pro et mes serveurs/PC ce dernier mois.

    j'ai pris 5 minutes pour regarder, plugin Page => PageController.php

    en attendant plus d'infos de la part de @Max et qu'il valide chez moi ça passe mais je ne sais pas si la méthode sera bonne. (valide sous apache car j'ai des soucis nginx donc a valider mais il y a pas de raison)

    dans le fichier PageController.php:
    if ($_POST['_password'] == '' && $_SERVER['HTTP_REFERER'] === $url)

    on vérifie si _password est vide (mais c'est pas ce qu'on souhaite)

    soit tu remplace cette ligne (53 dans la fonction renderPage) par celle-ci:
    if (isset($_POST['password'])) {

    ou en gardant le referer (ce qui est a mon sens je pense la meilleure solution):
    if (isset($_POST['password'])
    && $_SERVER['HTTP_REFERER'] === $url
    ) {

    encore désolé , je vais soumettre la correction dans la journée sur github si @Max ne l'a pas déjà dans ses modifications qu'il n'a peut être pas encore poussées !

    encore désolé du temps de réponse.

    tiens moi au courant !

    gn1234567

    J'ai eu quelque soucis de matériel depuis un mois j'ai pas eu le temps de me mettre dessus, j'essaie de regarder cet après midi/ce soir si @Max n'est pas passé dessus avant !

      NemStudio18 Merci, c'est sympa, car c'est une fonction qui pourrait m'être très utile et peut-être à d'autres personnes aussi ... ;-)

      5 days later

      Bonjour NemStudio18 et @Max,
      Je reviens vers vous pour savoir si vous avez eu un peu de temps pour voir ce problème de mot de passe.

      Bonne journée à tous les deux.
      Gérard N.

        gn1234567

        Désolé du temps de réponse, j'ai fais au mieux mais j'ai eu beaucoup de grosses galères entre perso/pro et mes serveurs/PC ce dernier mois.

        j'ai pris 5 minutes pour regarder, plugin Page => PageController.php

        en attendant plus d'infos de la part de @Max et qu'il valide chez moi ça passe mais je ne sais pas si la méthode sera bonne. (valide sous apache car j'ai des soucis nginx donc a valider mais il y a pas de raison)

        dans le fichier PageController.php:
        if ($_POST['_password'] == '' && $_SERVER['HTTP_REFERER'] === $url)

        on vérifie si _password est vide (mais c'est pas ce qu'on souhaite)

        soit tu remplace cette ligne (53 dans la fonction renderPage) par celle-ci:
        if (isset($_POST['password'])) {

        ou en gardant le referer (ce qui est a mon sens je pense la meilleure solution):
        if (isset($_POST['password'])
        && $_SERVER['HTTP_REFERER'] === $url
        ) {

        encore désolé , je vais soumettre la correction dans la journée sur github si @Max ne l'a pas déjà dans ses modifications qu'il n'a peut être pas encore poussées !

        encore désolé du temps de réponse.

        tiens moi au courant !

          NemStudio18 Bonjour et merci pour ton aide.
          Ne t'inquiètes pas, tu n'as pas à te justifier, nous avons tous une vie en dehors de tout cela. ;-)

          je vais faire le test ce soir en rentrant et modifier la ligne 53 du fichier PageController.php :
          if ($_POST['_password'] == '' && $_SERVER['HTTP_REFERER'] === $url)

          par :
          if (isset($_POST['password'])
          && $_SERVER['HTTP_REFERER'] === $url
          ) {

          Dommage qu'on ne puisse pas avoir accès aux fichiers du CMS via le gestionnaire de fichiers, j'aurai pu faire la modification en live ... ;-)

          En tout cas, encore merci et je vous tien au courant.

          Bonne journée,
          Gérard

          Hum, l'idée de laisser possible la modification directement en ligne des sources ça me parrait risqué.

          Après il y a sûrement une app pour ça qui existe. Sinon ce serait un plugin a intégrer mais je pense pas qu'il fera partie des plugins officiels.

          J'ai pas eu le temps de travailler dessus encore mais on a émis l'idée déjà de pouvoir faire ça avec le CSS.

            NemStudio18 Apres modification et test, cela ne fonctionne pas.
            Je met bien le mot de passe dans une nouvelle page, je rafraîchie le tout, je vais sur le site, je met le mot de passe mais la page reste toujours reteinte ...
            Juste pour info : je suis sur la version 299Ko qui est dans Yunohost. Je ne pense pas que cela y change grand chose, mais on ne sais jamais ... ;-)

            NemStudio18 j'ai un vague souvenir, que j'en avais déjà parlé avec le créateur de 99ko, qui avait fait un truc de test ou peut-être était-ce pour un autre CMS ...
            En tout cas, je me souviens qu'il fallait rentrer le mot de passe admin pour avoir accès à l’arborescence complète du CMS quand tu était déjà dans l'administration, pour éviter de faire des bêtises sans le faire exprès.

              gn1234567

              J'ai pas poussé mes tests plus que ça a vrai dire. Perso la page était bloquée car effectivement le mot de passe n'était pas vérifié, une fois ma modification effectuée je n'ai plus eu le soucis mais j'ai pas vraiment cherché plus loin.

              Je vais regarder plus en détails quand j'aurai couché les petits.

              Edit:
              je ne sais pas trop , je regarderai plus tard mais enlève la partie http referer et ça marchera:
              partie a enlever:
              && $_SERVER['HTTP_REFERER'] === $url

              toujours a la ligne 53 !

                NemStudio18 En effet, je viens de tester et ça fonctionne.
                par contre quand tu changes de page et que tu reviens sur la même page, le code n'est plus demandé et la page reste en claire.
                C'est juste pour info, je te laisse tranquille pour trouver le problème.

                Merci pour ton aide et passe une bonne soirée.
                Gérard N.

                  gn1234567

                  Oui j'ai remarqué aussi, je ne connais pas de fond en comble 299ko, le MDP est dpeut être en session ou en cache.

                  Je vais jeter un oeil a la gestion plus en profondeur et j'essaierai de te corriger ça demain.

                  Pour tester j'ai pas fais , vides le cache du navigateur et actualises voir si ça te redemande le MDP.

                    gn1234567

                    Ça doit être le comportement attendu alors donc pour moi c'est bon faut juste que je fasse la modification sur le repo.

                      NemStudio18 Il n'y a pas un moyen qu'au bout d'un certain temps, la page redemande le mot de passe sans être obligé de supprimer les cookies à chaque fois ?
                      Au moins pour que la page soit plus sécurisée, au cas où ...
                      Autrement, tu peux aussi changer le mot de passe de la page après chaque lecture mais cela devient contraignant.

                        gn1234567

                        dans plugin/page/page.php:
                        original (ligne 254):
                        elseif (isset($_SESSION['pagePassword']) && sha1($obj->getId()) . $obj->getPassword() . sha1($_SERVER['REMOTE_ADDR']) == $_SESSION['pagePassword'])
                        return true;
                        else
                        return false;

                        remplace par:
                        elseif (isset($_SESSION['pagePassword']) && isset($_SESSION['pagePasswordTime'])) {
                        // Vérifie si la session n'a pas expiré (30 minutes)
                        if (time() - $_SESSION['pagePasswordTime'] > 1800) {
                        unset($_SESSION['pagePassword']);
                        unset($_SESSION['pagePasswordTime']);
                        return false;
                        }
                        if (sha1($obj->getId()) . $obj->getPassword() . sha1($_SERVER['REMOTE_ADDR']) == $_SESSION['pagePassword'])
                        return true;
                        }
                        return false;

                        dans la fonction unlock
                        après la ligne 269 qui est:
                        $_SESSION['pagePassword'] = sha1($obj->getId()) . $obj->getPassword() . sha1($_SERVER['REMOTE_ADDR']);)

                        ajoutes:
                        $_SESSION['pagePasswordTime'] = time();

                        j'ai testé avec 10 secondes de délais pour voir, ça a l'air de fonctionner.

                          NemStudio18 Je test en rentrant ce soir et je te dis ca.
                          Ce qui va être bien avec cette modification, c'est qu'on va pouvoir changer la durée comme bon nous semble et ça c'est cool.

                          NemStudio18 if (time() - $_SESSION['pagePasswordTime'] > 1800) {

                          1800 secondes = 30 minutes

                            NemStudio18 en effet, ca pourrait être sympa, bonne idée.

                            Haaaaaaa, si j'avais eu accès au fichier du CMS, j'aurai pu faire les changements en live 😉
                            (mais non, il n'y a pas de message subliminal pour avoir les accès aux fichiers via le CMS ... 😎)

                              gn1234567

                              Promis je le note mais je ne suis pas le dev principal de 299ko donc ce ne sont pas mes décisions 😉

                              Si jamais je me met a faire un plugin de ce type ce sera un plugin officieux...

                              Je dois terminer absolument le plugin de wiki , et en parallèle je travail sur un ou deux thèmes dont celui de mon site pro ainsi qu'un ou deux plugins spécifiques pour mon utilisation (dont l'intégration d'un moyen de paiement stripe/PayPal).

                                NemStudio18 J'ai fait les modifications, c'est nickel.
                                J'ai testé 20 secondes, 1 minutes et 7 minutes, ça fonctionne à vermeille ... 😉
                                (Je trouve que c'est mieux que merveille ... 😉 )
                                Merciiiiiii ... 😉 😘

                                NemStudio18 A oui, ça promet que du bon tout ça ...
                                Ne t'inquiètes pas, pour le moment c'était surtout ce problème de mot de passe qui m’embêtait un peu, mais maintenant que c'est résolu, c'est super.

                                Je te remercie beaucoup pour ta réactivité et le temps que tu as passé pour résoudre ce problème.
                                Reste plus qu'a attendre la vrai mise à jour officielle sur Github et YunoHost.

                                Bonne soirée et à bientôt pour de nouvelles demandes ... 😉
                                Gérard N.