Restreindre une page par mot de passe

Voir le sujet précédent Voir le sujet suivant Aller en bas

  • 0

Astuce Restreindre une page par mot de passe

Message par Walt Jeu 8 Juil 2021 - 10:23

Restreindre l'accès aux pages HTML de votre forum

Cette astuce vous permet de restreindre l'accès à une (ou plusieurs) page(s) HTML de votre forum. Cette astuce peut être utile si vous souhaitez restreindre l'utilisation d'outils internes que vous avez développés comme des formulaires, par exemple.

Attention : nous attirons votre attention sur le fait que cette astuce n'est pas infaillible et peut être facilement contournée. En effet, si un membre désactive le Javascript depuis son navigateur, il pourra accéder à la page protégée grâce à cette astuce. Autrement dit, ne protégez pas une page HTML qui contient, par exemple, des mots de passe, des e-mails ou toutes autres informations sensibles.

Par contre, vous pouvez utiliser cette astuce pour protéger des pages HTML qui nécessitent l'exécution d'une fonction Javascript car si un membre désactive cette option pour voir la page protégée, il ne pourra pas utiliser ladite fonction. Par exemple, si vous décidez de protéger la page supprimer tous les messages d'un membre, en désactivant le Javascript pour y accéder, le membre ne pourra pas exécuter ledit script (car cela nécessite que le Javascript soit activée).

Installation

Création du script

Panneau d'administration  Modules  HTML & JAVASCRIPT - Gestion des codes Javascript

Assurez-vous que la gestion des codes Javascript soit activée, puis créez un nouveau javascript ayant pour titre "Gestion des accès". En ce qui concerne l'emplacement, ne cochez aucune des cases (plus d'informations sur la gestion des scripts).

Ajoutez le script suivant :

Code:
(function() {
    var u = +(function() {
        var b = document.cookie;
        cname = "fa_" + location.host.replace(/\./g, "_") + "_data=";
        var a = b.indexOf(cname);
        if (-1 != a) {
            var a = a + cname.length,
                c = b.indexOf(";", a); - 1 == c && (c = b.length);
            return unescape(b.substring(a, c))
        }
        return null
    }() || "").replace(/^.*"userid";(s:[1-9][0-9]*:"([1-9][0-9]*)"|i:([1-9][0-9]*));.*$/, "$2$3");
    if (u in passwords) {
        if (passwords[u] == prompt("Appuyez sur le bouton OK pour accéder à la page.")) {
            document.getElementById('s').parentNode.removeChild(document.getElementById('s'))
        } else {
            window.onload = function() {
                document.body.innerHTML = 'Une erreur d\'authentification s\'est produite. Merci de bien vouloir réessayer ou de contacter les administrateurs(trices).';
                document.getElementById('s').parentNode.removeChild(document.getElementById('s'))
            }
        }
    } else {
        window.onload = function() {
            document.body.innerHTML = 'Vous ne faites pas partie des utilisateurs(trices) autorisé(e)s à afficher cette page. En cas d\'erreur, merci de contacter les administrateurs(trices).';
            document.getElementById('s').parentNode.removeChild(document.getElementById('s'))
        }
    }
})()

Trois personnalisations sont possibles :

  1. Message de la pop-up : Lorsque l'utilisateur est autorisé à afficher la page, une pop-up s'ouvre pour lui demander de confirmer l'affiche :

    Code:
    if (passwords[u] == prompt("Appuyez sur le bouton OK pour accéder à la page."))

    Vous pouvez remplacer la phrase "Appuyez sur le bouton OK pour accéder à la page." par celle de votre choix ;

  2. En cas d'erreur du chargement de la page : lorsque l'utilisateur rencontre un problème lors du chargement de la page HTML à afficher, un message d'erreur est affiché :

    Code:
    document.body.innerHTML = 'Une erreur d\'authentification s\'est produite. Merci de bien vouloir réessayer ou de contacter les administrateurs(trices).';

    Vous pouvez remplacer la phrase 'Une erreur d\'authentification s\'est produite. Merci de bien vouloir réessayer ou de contacter les administrateurs(trices).' par celle de votre choix ;

  3. En cas de restriction d'accès à la page HTML : Lorsque l'utilisateur n'est pas autorisé à afficher ladite page, le message suivant s'affiche :

    Code:
    document.body.innerHTML = 'Vous ne faites pas partie des utilisateurs(trices) autorisé(e)s à afficher cette page. En cas d\'erreur, merci de contacter les administrateurs(trices).';

    Vous pouvez remplacer la phrase 'Vous ne faites pas partie des utilisateurs(trices) autorisé(e)s à afficher cette page. En cas d\'erreur, merci de contacter les administrateurs(trices).' par celle de votre choix.


N'oubliez pas de cliquer sur le bouton Valider pour sauvegarder vos modifications.

Restreindre une page par mot de passe 14-03-13

Protection d'une page HTML


Pour protéger l'accès à une page HTML, il est nécessaire de placer ce code entre les balises <head> ... </head>, juste avant les autres scripts Javascript contenus dans ladite page :

Code:
<!-- BEBIN Gestion des accès -->
<script type="text/javascript">var passwords= {'ID_du_membre':'', 'ID_du_membre':''};</script>
<style id=s>html,body{display:none}</style><script src="https://demodesastucesde.forumactif.com/10063.js"></script>
<!-- END Gestion des accès -->

Restreindre une page par mot de passe 14-03-14

Gestion des utilisateurs autorisés à afficher la page

La gestion des utilisateurs autorisés à afficher la page HTML est géré par cette ligne :

Code:
<script type="text/javascript">var passwords= {'ID_du_membre':'', 'ID_du_membre':''};</script>

Il suffit de remplacer l'élément ID_du_membre par son ID. Pour obtenir l'ID d'un membre, il vous suffit de vous rendre dans le profil du membre et de récupérer le nombre qui se trouve après le /u dans l'adresse URL :

Voir illustration :

Ce qui donne :

Code:
<script type="text/javascript">var passwords= {'1':''};</script>

Pour ajouter un deuxième utilisateur autorisé à afficher la page HTML, il suffit de mettre une , et de procéder de la même manière. Par exemple, si le deuxième utilisateur a pour ID 32, il me suffit de compléter le code de la manière suivante :

Code:
<script type="text/javascript">var passwords= {'1':'','32':''};</script>

Remplacement du script de la gestion des accès

Dans le point 1.1, vous avez installé un script JS permettant de gérer les accès. Il est donc nécessaire de récupérer le lien du script et de le remplacer par le votre, à la place de :

Code:
https://demodesastucesde.forumactif.com/10063.js

Votre code est maintenant opérationnel ! N'oubliez pas de cliquer sur le bouton Valider pour sauvegarder les modifications opérées sur la page HTML.

Démonstration

En suivant les instructions de cette astuce, la page HTML suivante a été protégée :

Restreindre une page par mot de passe 14-03-11

Etant donné que vous avez le statut d'invité, vous aurez ce message :

Restreindre une page par mot de passe 14-03-16

Pour ma part, étant donné que mon ID a été autorisé, j'obtiens le message suivant :

Restreindre une page par mot de passe 14-03-17

Il me suffit de cliquer sur le bouton OK et j'accède à la page HTML !

Walt

Walt
Modéractif
Modéractif

Masculin
Messages : 6082
Inscrit(e) le : 08/09/2015

Walt a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum