SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

251 Plugins, 182 contribs sur SPIP-Zone, 37 visiteurs en ce moment

Accueil du site > Auteurs, authentification et autorisations > Archives Auteurs et Authentification > Comment restreindre l’accès d’un article ou d’une rubrique dans l’interface (...)

Comment restreindre l’accès d’un article ou d’une rubrique dans l’interface publique par le statut.

20 octobre 2005 – par Iago – 109 commentaires

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Cette contrib vous permet de limiter la visibilité de plusieurs pages de votre site aux seules personnes identifiées, que ce soit par leur statut
-  de visiteur
-  de rédacteur
-  d’administrateur.

Si un internaute accède à une page publique protégée, il sera invité à s’identifier par son login et son mot de passe. Une fois fait, s’il a le statut minimum requis, il accèdera directement à la page demandée.

Modifications requises

Les modifications requises sont mineures et peuvent facilement être appliquées à votre site.

Elles sont sans danger et peuvent tout aussi facilement être supprimées en tout temps.

Procédures

-  Assurez-vous que vous n’avez pas déjà des fichiers portant les noms :

  • rubrique_statut.html
  • article_statut.html
  • login_public.php3
  • login_public.html
  • rubrique_ok.php3
  • article_ok.php3

-  Téléchargez, décompressez et déposez à la racine de votre site les fichiers qui sont contenus dans ce document.

Zip - 2.2 ko
Réserver

-  Modifiez le fichier rubrique.php3 :
Changez la valeur de $fond :

//$fond = "rubrique";
$fond = "rubrique_statut";

-  Modifiez le fichier article.php3 :
Changez la valeur de $fond :

//$fond = "article";
$fond = "article_statut";

-  Créez un nouveau groupe de mots-clé appelé Accessibilité
-  À la question Les mots-clés de ce groupe peuvent être associés, cochez pour cet exercice aux rubriques  [1]

-  Créez dans ce groupe les mots-clés les mots :

  • Administrateur
  • Rédacteur
  • Visiteur

Utilisation

Ajoutez le mot clé Administrateur, Rédacteur ou Visiteur pour limiter l’accès public d’une rubrique ou d’un article.

Explication

Prenons par exemple le cas d’une rubrique réservée : le fichier rubrique.php3 n’appellera plus directement comme squelette le fichier rubrique.html mais plutôt le squelette contenu dans le fichier rubrique_statut.html.

Ce squelette n’affiche rien, il permet simplement de vérifier si la rubrique est limitée en accès public. Et si oui, de vérifier si l’internaute s’est identifié par son login et son mot de passe. Après, il vérifie s’il a le statut minimum requis. [2]

Une fois cette vérification faite, on affichera la rubrique telle que prévue par votre squelette rubrique.html

Les seuls fichiers vraiment nouveaux sont rubrique_statut.html :

<BOUCLE_accessibilite(MOTS){id_rubrique}{type=Accessibilité}>
                <BOUCLE_a(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Administrateur}>
                        <?
                        if ($auteur_session['statut']!='0minirezo'){
                        ?>
                        <INCLURE(login_public.php3){id_rubrique}>
                        <?
                        }
                        else {
                        ?>
                        <INCLURE(rubrique_ok.php3){id_rubrique}>
                        <?
                        }
                        ?>
                </BOUCLE_a>
                <BOUCLE_b(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Rédacteur}>
                        <?
                        if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
                        ?>
                        <INCLURE(login_public.php3){id_rubrique}>
                        <?
                        }
                        else {
                        ?>
                        <INCLURE(rubrique_ok.php3){id_rubrique}>
                        <?
                        }
                        ?>
                </BOUCLE_b>
                <BOUCLE_c(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Visiteur}{lang_select=non}>
                        <?
                        if ($auteur_session['statut']!='6forum'&&$auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
                        ?>
                        <INCLURE(login_public.php3){id_rubrique}>
                        <?
                        }
                        else {
                        ?>
                        <INCLURE(rubrique_ok.php3){id_rubrique}>
                        <?
                        }
                        ?>
                </BOUCLE_c>
        </BOUCLE_accessibilite>
<INCLURE(rubrique_ok.php3){id_rubrique}>
<//B_accessibilite>

et

article_statut.html :

<BOUCLE_accessibilite(MOTS){id_article}{type=Accessibilité}>
                <BOUCLE_a(ARTICLES){id_article}{id_mot}{titre_mot=Administrateur}>
                        <?
                        if ($auteur_session['statut']!='0minirezo'){
                        ?>
                        <INCLURE(login_public.php3){id_article}>
                        <?
                        }
                        else {
                        ?>
                        <INCLURE(article_ok.php3){id_article}>
                        <?
                        }
                        ?>
                </BOUCLE_a>
                <BOUCLE_b(ARTICLES){id_article}{id_mot}{titre_mot=Rédacteur}>
                        <?
                        if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
                        ?>
                        <INCLURE(login_public.php3){id_article}>
                        <?
                        }
                        else {
                        ?>
                        <INCLURE(article_ok.php3){id_article}>
                        <?
                        }
                        ?>
                </BOUCLE_b>
                <BOUCLE_c(ARTICLES){id_article}{id_mot}{titre_mot=Visiteur}{lang_select=non}>
                        <?
                        if ($auteur_session['statut']!='6forum'&&$auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
                        ?>
                        <INCLURE(login_public.php3){id_article}>
                        <?
                        }
                        else {
                        ?>
                        <INCLURE(article_ok.php3){id_article}>
                        <?
                        }
                        ?>
                </BOUCLE_c>
        </BOUCLE_accessibilite>
<INCLURE(article_ok.php3){id_article}>
<//B_accessibilite>

Pour simplifier cette contrib, le fichier login_public.html est simplement le fichier login.html standard de SPIP où on a remplacé le formulaire privé (#LOGIN_PRIVE) en formulaire public (#LOGIN_PUBLIC). À la différence qu’une fois identifié, l’internaute ayant le statut minimum requis verra s’afficher la rubrique ou l’article demandé et non l’interface privée.

Nous avons également conservé, pour simplifier, les mêmes noms de fichiers pour ce qui est des fichiers rubrique_ok.php3, rubrique_ok.html et article_ok.php3, article_ok.html. Mais cela n’est pas recommandé, car on donne accès aux squelettes et nous ouvrons la porte à des chemins de contournements possibles.

Pour renforcer la sécurité, on doit changer les noms des deux fichiers rubrique_ok.php3 et article_ok.php3 pour des noms de votre choix et modifier les fichiers rubrique_statut.html et article_statut.html en conséquence.

On peut changer également les noms des fichiers rubrique_ok.html et article_ok.html et modifier en conséquence les fichiers rubrique_ok.php3 et article_ok.php3. Cela complique la vie aux intrus qui voudraient contourner la limitation d’accès.

Exemple

On ajoute simplement une extension numérique au hasard à notre fichier [3] :

-  Changer le nom du fichier rubrique_ok.html ou rubrique_ok_5943.html
-  Modifier le fichier rubrique_ok.php3 (ou l’équivalent selon le nom que vous lui aurez donné)
//$fond = ’rubrique_ok’ ;
$fond = ’rubrique_ok_5943’ ;

Il faut aussi se méfier des fichiers appelés par des INCLURE. Si on donne accès au squelette, on donne aussi le nom de ces fichiers. Et si on donne le nom d’une inclusion qui appelle une partie cachée de l’article, on donne ainsi la possibilité d’appeler directement cette inclusion.

Personnellement, j’utilise même une variable de session qui protège ces pages si elles ne sont pas appelées par rubrique.php3 et article.php3 ainsi que les fichiers appelés par INCLURE. Cela pourrait faire l’objet d’une autre contrib.

Modifications additionnelles

Cette contrib est une simplification d’une utilisation plus complexe que nous faisons sur plusieurs sites de l’accès limités à l’interface publique.

Sur plusieurs d’entres eux, les articles, les rubriques, les brèves et même les sites référencés portant un des mots-clés du groupe Accessibilité n’apparaissent dans aucun menu du site lorsqu’on a pas le statut requis. Une fois identifié, les divers menus s’enrichissent.

Cela permet d’éviter la frustration de se voir refuser l’accès à une page alors qu’on nous l’offre dans le menu ou le plan du site. [4]

Cela devrait faire l’objet d’une autre contrib.

Voir Comment gérer les rubriques réservées

Notes

[1] Sur plusieurs sites, j’utilise ce groupe de mots-clés pour les quatre options possibles.

[2] Les bidouilleurs pourront ajouter un message de leur cru pour avertir l’internaute qui se sera identifié et qui n’aura pas le statut requis qu’il ne peut visualiser cette page, et ne plus afficher le formulaire.

[3] En conservant le même nom suivi d’une extension, on facilite la gestion des fichiers qui se retrouvent souvent classés par ordre alphabétique dans des outils comme Dreamweaver ou autre.

[4] Il faut aussi penser à modifier les fichiers backend.php3 si on ne veut pas que les rubriques ou les articles non accessibles y soient listés.

Retour en haut de la page

109 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...

Pages 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...

Répondre à cet article

Retour en haut de la page

Ça discute par ici

  • FancyBox

    25 mars 2009 – 115 commentaires

    Adaptation du script FancyBox pour jQuery en plugin SPIP. Liste des fonctionnalités reprise depuis le site original : ajoute un joli effet d’ombre portée sous la fenêtre possibilité de grouper les images pour naviguer dans les séries d’éléments (...)

  • Diapos

    10 mars – commentaires

    Comme son nom l’indique, c’est un (petit) plugin qui rappelle un peu le fonctionnement d’un projecteur de diapositives. Seules contraintes : il nous faut des images ayant la même largeur et il nous faut numéroter les images. Il suffit pour cela de (...)

  • CleverMail

    20 janvier – 59 commentaires

    CleverMail est un plugin permettant d’envoyer des lettres d’informations à des abonnés depuis SPIP. Issu au départ d’un développement libre complètement indépendant de SPIP, il a connu une première version pour SPIP 1.9 avant d’être complètement réécris (...)

  • Découper un texte en pages et/ou en onglets

    4 mai 2007 – 190 commentaires

    Un raccourcis typographique qui découpe le texte de vos rubriques ou de vos articles en plusieurs pages, ou crée pour vous des onglets... Rubis sur ongle ! Introduction Les articles de votre site sont parfois un peu longs et vous vous êtes (...)

  • Barre typographique multilingue

    13 août 2007 – 61 commentaires

    Des onglets pour gérer les balises multi.