Utilité et fonctionnalités du plugin
Le plugin accès restreint vous permet de protéger et de restreindre l’accès à certaines rubriques uniquement aux visiteurs authentifiés et autorisés.
Si un visiteur n’est pas identifié ou s’il n’est pas autorisé, alors l’intégralité de la rubrique (ce qui inclus les sous rubriques, les articles, les liens ...) ne seront pas visibles par ce visiteur.
Si le visiteur est identifié, alors ce visiteur pourra accéder aux rubriques pour lesquelles il a reçu une autorisation d’accès.
Ainsi, ce plugin vous permet de masquer du contenu aux visiteurs non identifiés, et de créer des droits d’accès aux visiteurs identifiés.
Le plugin vous permet également de filtrer l’espace privé.
En résumé, le plugin accès restreint permet de définir et de gérer des zones de l’espace public et de l’espace privé en accès restreint.
Chaque zone contient des rubriques, et les auteurs peuvent être associés à des zones pour avoir le droit d’y accéder.
Toutes les boucles natives de SPIP sont modifiées pour en filtrer les résultats en fonction des droits du visiteur.
I. Installation du plugin accès restreint
Le plugin s’installe comme tous les autes, en ajoutant le dossier dans plugins/ et en l’activant dans l’espace privé.
Attention : en activant ou en désactivant ce plugin, il faut penser à vider le cache de SPIP pour que les droits d’accès sont modifiés. En particulier, en cas de désactivation, si le cache n’est pas vidé, des erreurs vont apparaîtres sur le site public. Ce n’est pas un bug, mais une sécurité, pour éviter une divulgation de contenu en cas de désactivation involontaire du plugin.
Le plugin pourrait gèrer automatiquement le changement de cache lors de son activation/désactivation, mais dans ce cas, en cas de désactivation involontaire, le contenu protégé serait immédiatement visible, ce qui peut être considéré comme une faille de sécurité.
II. Définir les zones en accès restreint
Les étapes précédantes ont pour effet de faire apparaître un nouvel onglet dans Configuration / Accès restreint, avec une petite icone de cadenas : ecrire/ ?exec=acces_restreint

C’est cette page qui va vous permettre de gérer les zones d’accès restreint de votre site, créer de nouvelles zones ou modifier les zones existantes. Pour créer votre première zone, cliquez sur le raccourci Créer une nouvelle zone.

L’administrateur qui crée la zone peut s’octroyer immédiatement les droits d’accès. Seul un administrateur général du site peut créer, modifier ou supprimer une zone.
Renseignez le titre, le descriptif, la portée (publique et/ou privée) de la zone. Par défaut, l’option "m’ajouter les droits d’accès à cette zone" est cochée car cela correspond à l’usage le plus fréquent.

Il faut ensuite définir les rubriques qui en font partie. Si on coche la racine du site, il n’y a plus aucun affichage sur l’espace public pour ceux qui ne sont pas identifiés. C’est pratique, par exemple, pour mettre un site en ligne pour les administrateurs et les auteurs sans qu’il soit visible pour le simple visiteur.
Les rubriques qui sont cochées sont explicitement restreintes. Si elles sont déplacées dans le site, elle le resteront. Les rubriques qui ne sont pas cochées mais dépendent d’une rubrique restreinte sont elles aussi restreintes, par héritage. Mais si elles sont déplacées dans l’arborescence dans une zone non restreinte elles seront visibles.
Il faut imaginer la restriction d’accès des rubriques comme une restriction d’accès dans un immeuble : lorsqu’il faut un autorisation pour franchir une porte, tout ce qui est derrière se retrouve en accès restreint.
Cliquez sur "Enregistrer" pour créer la zone. Vous revenez alors à la liste des zones, ou apparaît votre nouvelle zone :

Pour chaque zone, un résumé apparaît indiquant le titre et le descriptif de la zone, le nombre de rubriques restreintes, le nombre d’auteurs autorisés, et si la zone et publique et/ou privée.
Le pictogramme en haut à droite de la zone vous indique si vous avez personnellement accès à la zone. Dans le cas où vous n’avez pas accès, il indique un sens interdit sur fond rouge, et sinon une coche sur fond vert, comme ici.
III. Ajouter des auteurs à une zone
Depuis la zone
Vous pouvez maintenant ajouter d’autres auteurs à la zone qui auront le droit de voir son contenu.
Pour cela, cliquez sur modifier
Vous retrouvez le formulaire d’édition de la zone avec :
- les rubriques concernées reperées visuellement par un fond coloré
- la liste des auteurs autorisés dans la colonne de gauche

Vous pouvez cliquer sur "Ajouter des auteurs" pour visualiser la liste des auteurs du site, triés par nom et paginés :

Le picto "+" situé à droite de chaque auteur vous permet de l’ajouter à la liste des auteurs autorisés. La croix rouge située à droite de chaque auteur autorisé vous permet de le retirer de cette liste.
Vous pouvez ainsi administrer la liste des auteurs autorisés en la complétant comme par exemple ici :

Les mises à jour de la liste des auteurs autorisés sont appliquées immédiatement, sans qu’il soit nécessaire d’enregistrer la zone.
Lorsque vous avez fini, revenez à la liste des zones (par le bouton retour donc, ou le bouton enregistrer si vous avez fait d’autres modifications). Vous pouvez voir que le nombre d’auteurs a été mis à jour.
Depuis une fiche auteur
Vous pouvez aussi gérer les droits d’un auteur depuis sa page personelle dans l’interface privée :

Vous pouvez sélectionner une zone et cliquer sur "Ajouter" :

La liste des zones autorisées est alors mise à jour :

Le lien "Enlever de la zone" vous permet de retirer les droits d’accès à une zone pour cet auteur.
IV. Fonctionnement et boucles du plugin
Tout le fonctionnement des squelettes et des boucles est inchangé par rapport à la version précedente du plugin. On se reportera donc à la partie concernée de sa documentation.



Télécharger le plugin pour SPIP 2.0
Vos commentaires
# Le 21 mars à 11:14, par has
Bonjour,
J’aimerais améliorer le plugins accès restreint, au lieu d’authentifier les utilisateurs de la base spip, j’aimerai que l’authentification se fait via une autre base de données avec un autre cryptage du mot de passe ????
Quelqu’un peux m’aider
Merci
Répondre à ce message
# Le 10 mars à 15:11, par Fabrice
Bonjour,
Désolé de vous déranger mais je ne m’en sors pas. Après des jours de recherche sur Spip-Contrib et Google et l’installation de squelettes différents, je n’ai pas de solution.
Comme les auteurs ici de messages du 11 janvier au 27 janvier j’ai toutes sortes d’erreurs sql (Différentes en fonctions des squelettes essayés... ?) dès que Accès Restreint 3 est activé (Cache vidé, Tmp supprimé,... j’ai tout essayé et lu sur de nombreux forums tout ce qui concernait ces erreurs sql... sans comprendre comment m’en sortir.
La version de mysql est 5.0.51a. le site est hébergée chez OVH.
Merci d’avance pour votre éclairage.
Cordialement,
Fabrice
Répondre à ce message
# Le 1er mars à 20:40, par Perline
Une curiosité : les visiteurs (statut visiteur) qui arrivent sur la page restreinte voient "erreur 404’’ sans possibilité de login, il doivent "se connecter" pour voir apparaître le formulaire, et accéder à la page.
Est-ce normal ? Est-ce une sécurité ?
Merci
# Le 1er mars à 21:00, par Maïeul
les pages 404 sont produites par SPIP quand la page calculée par le squelette ne renvoie rien. Comme les squelettes par défaut on une boucle englobante, il est logique que cela ne renvoie rien en cas de visite sur une zone restreint.
Ceci dit, c’est contournable :
<BOUCLE_principal(ARTICLES){id_article}>....
</BOUCLE_principal>
<BOUCLE_test(ARTICLES){id_article}{tout_voir}>
....#FORMULAIRE_LOGIN_PUBLIC....
</BOUCLE_test>
<//B_principal>
# Le 1er mars à 23:33, par Perline
Je n’arrive pas au résultat par le biais de la partie alternative de la boucle ARTICLES, ni avec une boucle en utilisant le critère tout_voir, pas plus qu’avec le filtre AccesRestreint_article_restreint.
# Le 1er mars à 23:46, par Maïeul
étonnant ... ceci dit je viens de m’apercevoir que je me suis trompé. C’est
#LOGIN_PUBLICet pas#FORMULAIRE_LOGIN_PUBLICtu n’obteins rien dans la parte alternatives ?
# Le 1er mars à 23:55, par Perline
J’ai essayé avec un peu tout, login_public aussi, il y a me semble-t-il une vague apparition fugace d’un bout de formulaire, mais pas sûre.
J’ai essayé pas mal de combinaisons dans la partie alternatives, à partir des modèles donnés - boucle ou filtres - mais absolument rien.
Ma base est un Zpip, donc quelque chose de stable.
Dans le pied de page il y a le login et si on l’utilise dans la page "404" en réalité une page d’accès restreint, ça marche bien.
C’est l’intégration dans la partie alternative que je n’arrive pas à déclencher.
Pourtant rien n’a l’air bien sorcier.
Vraiment curieux.
Merci.
# Le 2 mars à 00:13, par Maïeul
"Ma base est un Zpip".
A see ...
je suppose que tu a fais les test dans contenu/article.html ? le pb, c’est que le squelette "père" article.html à déja une boucle.
<BOUCLE_principale_article(ARTICLES){id_article}><INCLURE{fond=structure}{env}{id_rubrique=#ENV{id_rubrique,#ID_RUBRIQUE}}{type=article}{composition} />
</BOUCLE_principale_article>
du coup, bof ca marche pas. ..
la soluce est de surcharger article.html à la racine.
avec un truc du genre :
<BOUCLE_principale_article(ARTICLES){id_article}><INCLURE{fond=structure}{env}{id_rubrique=#ENV{id_rubrique,#ID_RUBRIQUE}}{type=article}{composition} />
</BOUCLE_principale_article>
<BOUCLE_article_present(ARTICLES){id_article}{tout_voir}>
<INCLURE{fond=page}{env}{page=login}>
</BOUCLE_article_present>
<//B_principale_article>
pas testé, mais je pense à priori que c’est bon.
# Le 5 mars à 11:50, par Perline
Après tests, un truc qui marche c’est, dans article.html :
# Le 8 mars à 11:09, par Ogmios
Bonjour,
Je souhaiterais afficher uniquement les rubriques restreintes.
J’ai essayé avec
[(#PLUGIN AccesRestreint |oui)
[(#ID_RUBRIQUE|AccesRestreint_rubrique_restreint|oui)
Les deux ou juste un seul, j’ai toutes les rubriques qui s’affichent.
Pouvez-vous m’aider ?
Merci
Répondre à ce message
# Le 24 février à 19:49, par babbibel
Salut,
J’utilise Accès restreint 3.0 sur SPIP 2.0.10 et j’ai constaté que les liens vers les messages du forum d’un article appartenant à une rubrique dont l’accès est restreint ne sont pas filtrés.
J’ai d’abord pensé que c’était à cause du critère plat ou tout mais c’est apparemment pas ça...
J’espère que la question n’a pas encore été résolu ici et que quelqu’un pourra m’aider...
Merci d’avance.
Répondre à ce message
# Le 24 février à 15:40, par gigi
Pour ceux qui rencontreraient le problème : si vous voyez deux fois "mot de passe oublié", supprimez
qui se trouve déjà dans le formulaire appelé par LOGIN_PUBLIC. Ou, si vous voulez que la page appelée s’ouvre dans une pop-up, recopiez le code ci-dessus dans login public...
A part ça, tout va, merci du plugin !
Répondre à ce message
# Le 22 février à 09:42, par mailou
Bonjour,
Je suis en local, j’ai créé une liste de rubriques (avec mot clé "liens") qui apparaissent sur la page d’accueil, tout le site est en accès restreint, si bien que les gens extérieur ne voient qu’un texte qui est écrits dans "DESCRIPTIF_SITE_SPIP", est-il possible que ces rubriques qui fonctionnent avec le mot clé "liens" échappent à cette restriction ?
Merci
Répondre à ce message
# Le 4 février à 15:18, par Eric
Soit deux configs identiques : SPIP 2.0.10, mêmes plugins, même contenu dans la base,
Une en local, l’autre en ligne,
En local acces restreint fonctionne parfaitement
En ligne, une fois les caches vidés plusieurs problèmes :
- sur la page ?exec=zones_edit&id_zone=1 le bloc à gauche pour ajouter des auteurs à la zone n’apparait pas
- sur la partie publique, une rafale d’erreurs sql sont indiquées pour des boucles qui fonctionnent très bien quand acces restreint n’est pas activé
Les différences entre les deux configs :
En local ça tourne nickel sur un vieux tromblon easyphp 1.8 soit php 4.3.10 et MySQL 3.23.49 (! !)
En ligne php 5.2.12 et MySQL 5.0.67
Avez vous déja vu ce genre de problème ?
Avez vous une idée ( même vague ) de comment en sortir ?
# Le 12 février à 17:56, par Eric
C’était un problème sur ma base : résolu !
Répondre à ce message
# Le 11 février à 14:29, par naomed
bonjour,
Sur ma page sommaire je fais apparaitre une introduction avec une image extraite du texte pour tous les articles y compris ceux qui sont restreints. Pour les visiteurs non logges, l’image n’apparait pas, alors que cela fonctionne pour les logges.
voici le code utilisé :
<a href="">[(#TEXTE|extraire_balise{img}||?{[(#TEXTE|extraire_balise{img}|image_reduire{200,200,left})] })]</a>[(#INTRODUCTION|couper{700})]je suis en spip 2.0.10 et en local
quelqu’un aurait il déjà eut ce probleme ?
Répondre à ce message
# Le 11 janvier à 21:02, par ?
Bonjour,
J’utilise Spip 2.0.10 ( http://mnemosis.univ-paris1.fr ) mais, lorsque je veux activer le plugin accès restreint, différentes erreurs que je n’arrive pas à comprendre s’affichent :
<BOUCLE_combien>()Erreur SQL
forum.id_rubrique, forum.id_article, forum.id_breve FROM spip_forum AS `forum` WHERE (forum.statut = 'publie') AND (forum.id_article = 21) AND ((0=0 OR (forum.id_article NOT IN ( SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WHERE 0=1))) OR (forum.id_breve NOT IN ( SELECT zzzb.id_breve FROM `mnemosis`.spip_breves as zzzb WHERE 0=1)))
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WH
</BOUCLE_combien> AIDE
2 <BOUCLE_combien>()
Erreur SQL
forum.id_rubrique, forum.id_article, forum.id_breve FROM spip_forum AS `forum` WHERE (forum.statut = 'publie') AND (forum.id_article = 51) AND ((0=0 OR (forum.id_article NOT IN ( SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WHERE 0=1))) OR (forum.id_breve NOT IN ( SELECT zzzb.id_breve FROM `mnemosis`.spip_breves as zzzb WHERE 0=1)))
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WH
</BOUCLE_combien> AIDE
3 <BOUCLE_doc>()
Erreur SQL
documents.mode, documents.extension, documents.id_document, documents.largeur, documents.hauteur, L1.titre AS type_document, documents.taille, L1.mime_type, documents.titre, documents.descriptif, documents.id_document FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L1 ON ( L1.extension = documents.extension ) WHERE (documents.taille > 0 OR documents.distant='oui') AND (documents.id_document = 193) AND ((documents.id_document IN ( SELECT zzzd.id_document FROM `mnemosis`.spip_documents_liens as zzzd WHERE (((((zzzd.objet='rubrique' AND 0=0) OR (zzzd.objet='article' AND (zzzd.id_objet NOT IN ( SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WHERE 0=1)))) OR (zzzd.objet='breve' AND (zzzd.id_objet NOT IN ( SELECT zzzb.id_breve FROM `mnemosis`.spip_breves as zzzb WHERE 0=1)))) OR (zzzd.objet='forum' AND (zzzd.id_objet IN ( SELECT zzzf.id_forum FROM `mnemosis`.spip_forum as zzzf WHERE ((0=0 OR (zzzf.id_article NOT IN ( SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WHERE 0=1))) OR (zzzf.id_breve NOT IN ( SELECT zzzb.id_breve FROM `mnemosis`.spip_breves as zzzb WHERE 0=1))))))) OR ((zzzd.objet NOT IN ('rubrique','article','breve','forum')))))) OR (documents.id_document NOT IN ( SELECT zzzd.id_document FROM `mnemosis`.spip_documents_liens as zzzd)))
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT zzzd.id_document FROM `mnemosis`.spip_documents_liens as
</BOUCLE_doc> AIDE
4 <BOUCLE_combien>()
Erreur SQL
forum.id_rubrique, forum.id_article, forum.id_breve FROM `spipcont`.spip_forum AS `forum` WHERE (forum.statut = 'publie') AND (forum.id_article = 17) AND ((0=0 OR (forum.id_article NOT IN ( SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WHERE 0=1))) OR (forum.id_breve NOT IN ( SELECT zzzb.id_breve FROM `mnemosis`.spip_breves as zzzb WHERE 0=1)))
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WH
</BOUCLE_combien> AIDE
5 <BOUCLE_combien>()
Erreur SQL
forum.id_rubrique, forum.id_article, forum.id_breve FROM spip_forum AS `forum` WHERE (forum.statut = 'publie') AND (forum.id_article = 48) AND ((0=0 OR (forum.id_article NOT IN ( SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WHERE 0=1))) OR (forum.id_breve NOT IN ( SELECT zzzb.id_breve FROM `mnemosis`.spip_breves as zzzb WHERE 0=1)))
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT zzza.id_article FROM `mnemosis`.spip_articles as zzza WH
</BOUCLE_combien>
J’ai trouvé des messages de plusieurs personnes confrontées à un problème similaire mais aucune façon de le résoudre. Quelqu’un y serait-il parvenu ?
Je précise que j’ai importé les tables d’un site développé avec spip 1.9 (il avait été victime d’une attaque virale rendant impossible la connexion à l’espace privé).
Merci à tous !
# Le 16 janvier à 00:25, par Cedric Morin
Ce type d’erreur est lié à la version de mySQL. Quelle version utilise-tu ?
# Le 20 janvier à 12:19, par M.B.
Bonjour,
Le site Mnemosis marche avec mMySQL 4.0.24.
Merci beaucoup pour votre aide,
# Le 3 février à 11:53, par Eric
J’ai le même type d’erreur avec MySQL 5.0.67 sur SPIP 2.010
Répondre à ce message
# Le 27 janvier à 21:50, par Bernt
Bonjour,
Je viens de basculer de la 1.9 vers la 2.010... et je rencontre les mêmes erreurs sql que mentionnées plus bas.
Je viens d’effectuer une même mise à jour pour un autre de mes sites et je n’ai pas eu ce problème.
La version de mysql est 5.0.67.
Merci de m’aider.
Cordialement,
BS
# Le 27 janvier à 23:03, par Bernt
J’ai fait le test avec une base en local...
et ça fonctionne.
J’ai tout désinstallé sur le serveur et réinstallé.
Sans résultat. _ ???
Répondre à ce message