Le plugin Accès Restreint

Le plugin accès restreint permet de définir et de gérer des zones de l’espace public et privé en accès restreint. Les zones ainsi définies ne sont alors accessibles qu’aux visiteurs authentifiés et autorisés.
Depuis SPIP 2, on utilisera Acces Restreint 3.0 qui respecte le même fonctionnement.

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 authentifié 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 accessible à ce visiteur.

Si le visiteur est authentifié, 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.

Les dernières versions de ce plugin permettent (à partir de SPIP 1.9.2) de filtrer également l’espace privé. Pour les versions précédentes, on parle de visiteurs identifiés ou non, et uniquement de visiteurs, les rédacteurs et les administrateurs auront eux accès à l’intégralité des contenus depuis 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é à partir de spip 1.9.2) 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 surchargées pour en filtrer les résultats en fonction des droits du visiteur.

I. Installation du plugin accès restreint

1. Placez le plugin, après l’avoir récupéré dans les packages de la zone, http://zone.spip.org/files/spip-zone/, dans un dossier nommé plugins à la racine de votre site SPIP.

2. Allez dans l’espace privée du site : Configuration / Gestion des plugins en tapant l’url suivante : ecrire/ ?exec=admin_plugin

3. Cochez le plugin Accès restreint et validez

4. Videz le cache

Attention : en activant ou en désactivant ce plugin, il faut penser à vider le cache de SPIP. Sinon, vous aurez les erreurs php décrites dans le forum de cet article.

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.

-  créer une nouvelle zone
-  lui donner un titre
-  lui donner un descriptif
-  cocher « m’ajouter les doits d’accès à cette zone »

Il faut 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 admins 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’acces 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.

Valider pour créer la zone. Vous obtiendrez alors ceci :

Toutes les rubriques restreintes de la zone (explicitement ou indirectement) apparaissent sur fond coloré.

La liste des auteurs ayant accès à une zone est affichée sous le formulaire d’édition.

Pour revenir à la liste des zones, cliquez sur Voir toutes les zones :

III. Créer des auteurs et/ou des visiteurs et leur donner les droits sur les rubriques protégées

Une fois la ou les zones créées, il faut aller dans la fiche auteur et indiquer à quelles zones l’auteur ou le visiteur ont accès. La fonction de restriction par zone n’apparaît, en effet, qu’après la création d’un auteur.

ecrire/ ?exec=auteurs_edit&id_auteur=2

Un administrateur général du site peut ajouter ou supprimer l’accès à toute zone pour tous les auteurs (administrateur, rédacteur ou visiteur). Un administrateur restreint ne peut intervenir que sur les rédacteurs et les visiteurs. Il peut accorder ou supprimer l’accès uniquement aux zones auxquelles il a lui-même accès. Il lui est également possible d’accorder l’accès à une des ces zones à un autre administrateur mais ne peut lui supprimer l’accès.

L’interface du plugin est internationalisée. Mais pour l’instant, seul les fichiers de langue anglais et français sont disponibles. Vous pouvez compléter les fichiers de langues ou les personnaliser dans le répertoire lang du plugin.

IV. Fonctionnement et boucles du plugin

1. Aspects techniques

-  Le plugin accès restreint installe trois nouvelles tables dans SPIP, comme on peut le voir dans le répertoire base du plugin :

-  Une table descriptive des zones d’accès, appelée spip_zone
-  et deux tables de liens zones-auteurs et zones-rubriques, appelées spip_zones_auteurs et spip_zones_rubriques.

Ces tables sont sauvegardées automatiquement lors d’un dump dans l’onglet Configuration/Maintenance /Sauvegarde du site.

2. Comportement

Le plugin modifie le comportement des boucles SPIP pour que le résultat ne fasse apparaître que ce que le visiteur (que ce soit un visiteur anonyme un visiteur identifié ou un auteur au sens de SPIP) a le droit de voir.

L’intérêt de cette démarche, c’est qu’elle fonctionne sur toutes les boucles, donc tout le site se trouve instantanément sécurisé sans aucune modification de squelette. Il n’y a pas de risque d’oublier un morceau.

Ce plugin nous garantie l’absence de fuite liée a de nouvelles fonctionnalités de SPIP (comme les modèles [1] de 1.9.1 qui seraient une belle faille pour ceux qui sécuriseraient du contenu au moyen des squelettes).

Le principe même de fonctionnement du plugin acces-restreint est de ’supprimer’ du résultat des boucles tout ce que le visiteur n’a pas le droit de voir. Ainsi les zones à accès réservées sont invisibles pour qui n’y est pas habilité.

N’ayez donc aucune crainte en ce qui concerne les robots, les moteurs de recherche, ou les fichiers de backend. Le filtre est infaillible.

Ce principe de fonctionnement permet au plugin de filtrer le contenu publié sans modification du squelette. Cela permet aussi d’avoir des menus (liste de rubriques) cohérents avec le contenu effectivement accessible. Bref c’est un parti pris, qui fait son efficacité même.

En contrepartie, un visiteur (identifié ou non) qui essaie d’accéder à du contenu auquel il n’a pas le droit a le même résultat que si le contenu n’existait pas, (il est renvoyé sur une page 404) car, d’un point de vue technique ce contenu n’existe effectivement pas dans le résultat des boucles SPIP des squelettes qu’il interroge.

À partir de là, il y a deux stratégies possibles selon la finalité de l’accès restreint :

-  Un filtrage fort, sans indication qu’un contenu existe mais qu’il n’est pas accessible : avoir un lien ’S’identifier’ générique sur tout le site, qui permet aux personnes habilitées de se connecter pour accéder au contenu.

-  Un filtrage avec information : dans la partie alternative de la boucle article ou de la boucle rubrique, on regarde si l’objet existe et s’il a été filtré, et dans ce cas alors, on présente le formulaire de login.

À cet effet, deux filtres ont été créés pour le plugin :
-  AccesRestreint_article_restreint appliqué à l’id_article

-  AccesRestreint_rubrique_restreinte appliqué à l’id_rubrique

De plus le critere {tout_voir} permet de passer outre le filtrage d’acces. Il peut etre utilisé par exemple pour lister les titres des articles dans une rubrique restreinte, ou meme pour verifier l’existence d’un article filtré, a la place des deux filtres ci-dessus.

3. Exemple de boucle :

<BOUCLE_main(ARTICLES){id_article}> bla bla bla </BOUCLE_main>

[(#ID_ARTICLE|AccesRestreint_article_restreint|?{' ',''}) #LOGIN_PUBLIC ] 

[(#ID_ARTICLE|AccesRestreint_article_restreint|?{'',' '}) Cette page n'existe pas ] 

<//B_main>

On peut faire, sur le même modèle, une boucle rubrique, en utilisant l’utilisation normale et judicieuse des parties alternatives des boucles spip. La boucle donnée ci-dessus illustre l’idée, mais il va sans dire qu’en contexte réel, il serait préférable de faire des inclure, soit d’un squelette formulaire avec un login public, soit d’un squelette de page d’erreur 404.

En résumé, pour faire la différence entre un article ou une rubrique inexistante, et un article ou une rubrique masquées, il y a deux filtres pour ca, qu’il faut utiliser dans la partie alternative des boucles.

<BOUCLE_article(ARTICLES){id_article}>
là j'affiche mon article normalement
</BOUCLE_article>
[(#ID_ARTICLE|AccesRestreint_article_restreint|?{' ',''})    
là je fais ce qu'il faut pour dire à ce visiteur qu'il ne s'est pas identifié ]
[(#ID_ARTICLE|AccesRestreint_article_restreint|?{'',' '})
là je dis que vraiment non cette page n'existe pas, ou alors qu'on l'a perdue ... ]
<//B_article>

Un autre exemple utile consiste à lister toutes les rubriques contenues dans une zone.
Pour cela on utilise le critere tout_voir et id_zone pour obtenir les rubriques liées à une zone. Mais attention, ce dernier critère ne retourne que les rubriques explicitement cochées dans l’interface, pas toutes les rubriques filles.
Pour lister toutes les rubriques d’une zone, il faut donc ecrire :

<ul>
<BOUCLE_rubs(RUBRIQUES){id_zone=1}{tout_voir}>
<BOUCLE_sousrub(RUBRIQUES){branche}{doublons}{tout_voir}>
<li>#TITRE</li>
</BOUCLE_sousrub>
</BOUCLE_rubs>
</ul>

On notera l’utilisation du critère doublons dans la sous boucle. Il a pour but d’éviter l’affichage d’une même rubrique à plusieurs reprises dans le cas ou plus d’une rubrique est cochée et ou l’une est dans la branche de l’autre.

V. Page d’identification et login public

Voilà le plugin est « magique », il filtre tout pour vous une fois que les accès ont été définis, que les rubriques et les auteurs ont été rattachés aux zones restreintes.

Pourtant, il faut encore faire un petit effort, même si vous avez l’habitude que spip fasse tout pour vous, y compris l’impossible :-)

-  Le premier effort à faire, c’est de mettre un formulaire de login en page d’accueil, ou un bouton « s’identifier » qui permette au visiteur de se loguer :

-  Pour l’identification, un #LOGIN_PUBLIC fait très bien l’affaire.

-  Pour donner des droits d’accès à des personnes qui ne sont ni administrateur (petit bonhomme vert dans la page auteur), ni rédacteur (petit bonhomme jaune), il faut les inscrire en tant que visiteur, (petit bonhomme bleu). Attention, pour avoir un statut visiteur qui ne puisse pas se connecter à la partie privée, il faut bien penser à activer la partie forum et à configurer le site en conséquence. Dans la partie de configuration du site, à cette url, ecrire/ ?exec=config_contenu , cochez les options suivantes :

-  Enregistrement obligatoire (les utilisateurs doivent s’abonner en fournissant leur adresse e-mail avant de pouvoir poster [2] des contributions.

-  Ne pas accepter les inscriptions

Les visiteurs ne se trouvent pas dans la page auteurs de la partie privée, mais à cette url
 ?exec=auteurs&visiteurs=oui

Ce plugin a été bien intégré sur ce site, qui pourra nous servir d’exemple : http://cfdt-scerao.fr/.
On constate que sur le modèle du squelette login.html présent dans la dist de SPIP 1.9, cette page qui donne accès à l’espace privé, l’auteur de ce site a créé un squelette appelé login_public.html
qui sera le passage obligé pour accéder à l’espace réservé aux adhérents, sans qu’ils aient toutefois accès à l’espace privé, avec, comme option l’envoi de mot de passe si celui-ci a été oublié :

Voici le bout de code à mettre dans le squelette login_public.html :

<div class="formulaire_spip formulaire_login">
#LOGIN_PUBLIC
<p style="text-align: center;">
&#91;<a href="#URL_PAGE{spip_pass}" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=330'); return false;">
<:login_motpasseoublie:></a>&#93;
&#91;<a href="#URL_SITE_SPIP/"><:login_retoursitepublic:></a>&#93;
</p>
</div>

Ce qui donne un formulaire de connection qui ressemble à cette capture d’écran :

Une fois l’adhérent correctement logué, il aura donc accès aux rubriques protégées.

Mieux encore que #LOGIN_PUBLIC , il convient d’utiliser :[(#LOGIN_PUBLIC|mapage.html)] . Voir à ce sujet la documentation de SPIP sur les formulaires http://www.spip.net/fr_article1827.html


-  #LOGIN_PUBLIC
D’une utilisation beaucoup plus spécifique, la balise #LOGIN_PUBLIC affiche un formulaire permettant à vos utilisateurs de s’identifier tout en restant sur le site public (sans entrer dans l’espace privé). Cette balise sert notamment à authentifier les visiteurs pour les sites proposant des forums modérés sur abonnement. Elle peut aussi servir de brique de base pour restreindre l’accès à certains contenus sur le site public : mais cela reste d’un maniement complexe, et nécessitera encore des développements et la rédaction de tutoriels complets avant d’être facilement utilisable par tous ; néanmoins, un exemple d’utilisation avancée est donné plus bas.
Le #LOGIN_PUBLIC, par défaut, « boucle sur lui-même », c’est-à-dire que le formulaire revient sur la page où il se trouve. On peut cependant indiquer une page vers laquelle le formulaire mènera, sous la forme :

[(#LOGIN_PUBLIC|spip.php?page
=mapage)] ou [(#LOGIN_PUBLIC|spip.php?rubrique20)]

Si votre site offre une inscription automatique à l’espace privé, les données de connexion à l’espace public sont identiques à celles de l’espace privé ; c’est-à-dire que les données envoyées à l’utilisateur pour s’identifier à l’espace public lui permettent également d’accéder à l’espace privé.
Si, au contraire, vous avez interdit l’inscription automatique à l’espace privé, il faut impérativement avoir au moins un article dont les forums seront réglés en mode « sur abonnement » pour activer cette balise ; dès lors, SPIP pourra fournir des informations de connexion pour le site public sans accès à l’espace privé.

-  #URL_LOGOUT est le pendant de #LOGIN_PUBLIC ; il donne une URL permettant à un visiteur authentifié de se déconnecter.
On peut passer un paramètre à cette balise pour spécifier l’adresse de retour après la déconnection. Par exemple :

[(#URL_LOGOUT{spip.php?page=
sommaire})] renverra vers la page de sommaire.

Voici un exemple simple, mais complet, d’utilisation de ces deux balises. Il faut passer par un peu de php pour tester la variable
$auteur_session qui indique qu’un auteur est identifié ou non. Si c’est le cas, on peut récupérer (voire tester) son statut, son login, etc., via $auteur_session['statut']....

<?php if ($auteur_session) { ?>
Vous êtes authentifié, <a href='#URL_LOGOUT'>cliquez ici pour vous déconnecter</a>
... ici le contenu en accès restreint....
<?php } else { ?>
<h2>Cette partie est en accès restreint</h2>
#LOGIN_PUBLIC
<?php } ?>

VI. Comment je fais dans mes squelettes ?

Nous mettons en pièce jointe un fichier Accès_restreint_noisettes.zip, avec tous les éléments qu’il vous faut.

Nous vous proposons une méthode simple, qui modifie un minimum la Dist, et s’adapte à n’importe quelle situation.

1/ Insérer partout dans vos squelettes les deux noisettes d’identification et de déconnection. Libre à vous de créer des chaînes de langues, et ou/de personnaliser le texte. Le plus simple est de se servir d’une inclusion sous les rubriques, dans inc_rubrique.html par exemple.

[(#REM) noisette de deconnection]
<INCLURE{fond=inc_identification_sedeconecter}{lang}>

[(#REM) noisette de connection]
<INCLURE{fond=inc_identification_visiteurs}{lang}>

2/ Mettre les noisettes dans le répertoire squelettes, avec éventuellement l’image du cadenas.

-  inc_identification_sedeconecter.html

#CACHE{3600}
[(#REM) Deconnection ]
<?php if ($auteur_session) { ?>
<h1><?php echo $auteur_session['nom']; ?></h1>
<p>Vous &ecirc;tes authentifi&eacute;,<br />
<a href='#URL_LOGOUT'>Se d&eacute;connecter</a><p>
#LOGIN_PUBLIC
<?php } else {} ?>

Cette noisette n’affiche rien si le visiteur est identifié, et affiche le nom de la personne s’il est identifié, en lui proposant de se déconnecter.

-  inc_identification_visiteurs.html

#CACHE{3600}
[(#REM) Identification ]

<?php if ($auteur_session) { } 
else { ?>

<h1>Intranet
<!-- facultatif<img style="width: 24px; height: 24px;" alt="zone prot&eacute;g&eacute;e" src="#URL_SITE_SPIPsquelettes/zones-acces-24.gif" />-->
</h1>

#LOGIN_PUBLIC

<p><a href="#URL_PAGE{spip_pass}" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=330'); return false;"><:login_motpasseoublie:></a></p>

<?php } ?>

Cette noisette n’affiche rien si vous êtes identifié, et affiche le formulaire d’identification si le visiteur n’est pas identifié.

L’interêt de créer deux fichiers distincts, c’est que l’on peut les placer à deux endroits différents sur le site.

3/ formulaire_login.html
Le placer dans squelettes/formulaires pour ne pas l’écraser lors d’une future mise à jour, et de le personnaliser. Nous vous en proposons un, légèrement modifié par rapport à celui de la distribution officielle, qui a l’énorme avantage de désactiver le focus [3]
, qui pourrait se révéler très vite pénible et encombrant, car il agit comme une ancre, et si vous ne le désactiver pas, vos visiteurs seront automatiquement « redirigés » vers le formulaire d’authentification. Ce défaut ergonomique se constate sur les petites résolutions, ou sur les sites ayant de nombreuses rubriques

formulaire_login.html

4/ inc_nom_statut_ip.html
Une dernière noisette optionnelle, qui peut vous donner le statut de la personne connectée, administrateur, rédacteur ou visiteur, à inclure par exemple dans inc_identification_sedeconecter.html

[(#REM) noisette de statut]
<INCLURE{fond=inc_nom_statut_ip}{lang}>
<?php echo 
$auteur_session['nom'].'<br />';
switch ($auteur_session['statut']) 
{
case '0minirezo' : echo 'Administrateur<br />'.$REMOTE_ADDR; break;
case '1comite'   : echo 'R&eacute;dacteur'; break;
case '6forum'    : echo 'Simple visiteur'; break;
} 
?>

5/ Voir aussi la noisette qui permet de donner l’intro de l’article et un formulaire de login avec le critere {tout_voir}.
Elle est disponnible sur la zone et dans la dernière version du plugin.
Pour la voir en fonctionnement, c’est sur spip-zone.info.

6/ Une autre noisette, qui joue sur le plugin Balise Session et Accès restreint, est disponnible ici.

Voilà vos squelettes sont fin prêts pour un intranet ou un accès restreint.

VII. Ce que ne faisait pas le plugin en version SPIP 1.9.1

Le plugin accès restreint sous SPIP 1.9.1 était parfait pour l’espace public. Mais, il ne permettait pas encore de restreindre et de filtrer l’espace privé.

VIII. Accès restreint et filtrage de l’espace privé depuis la version 1.9.2 Pr1, SVN et au-delà

C’est désormais possible de bénéficier de toutes les fonctionnalités du plugin dans l’espace privé. Pour chaque zone restreinte, on définit si ca doit filtrer l’espace public et/ou l’espace privé. Et non seulement ca restreint l’accès, mais ca permet encore de filtrer l’affichage de la partie privée.

Donc un rédacteur qui n’est pas rattaché à une zone ne verra pas les rubriques de cette zone dans l’interface d’administration. Un administrateur non plus. Attention toutefois, seul l’administrateur restreint, ne pourra pas changer le statut des zones du plugin. Un administrateur complet peut se rajouter à une zone restreinte s’il le désire.

IX. Interaction avec le plugin Agenda

Le plugin accès restreint filtre, dans l’espace public, la boucle EVENEMENTS du plugin Agenda. Seuls les évènements inclus dans un article appartenant à une rubrique accessible seront visibles.

À partir des versions SVN n°11549 pour le plugin accès restreint et 11548 pour le plugin agenda en date du 21 avril 2007, le filtrage des évènements dans l’espace privé est également pris en charge.

X. Jouons avec le plugin accès restreint et le plugin balise session

Objectifs :

-  Afficher un bouton de connexion si et seulement si le plugin accès
restreint est installé *et* il y a au moins une rubrique de restreinte.
-  Un fois identifié, Afficher d’une manière différente les rubriques qui
était masquées
-  Et afficher un bouton de déconnexion

Dans un premier temps, vérifier que le plugin accès restreint est installé.
Pour cela, lire la config des plugins en y cherchant la signature du
plugin accès restreint :

[(#CONFIG{plugin}|match{ACCESRESTREINT}|?{' 
'})<INCLURE(session.php){fond=login-logout}{connexion}{id_article}{id_rubrique}>]

Ensuite, dans le squelette login-logout.html vérifions qu’il y a au
moins une rubrique protégée.

<BOUCLE_AuMoinsUneRubriqueProtegee(ZONES_RUBRIQUES){0,1}>
[(#SESSION{id_auteur}|?{' '})<a href="#URL_LOGOUT" 
title="<:deconnexiontitle:>">[(#SESSION{nom}|propre)], <:deconnexion:></a>]
[(#SESSION{id_auteur}|?{'',' '})<a 
href="[(#SELF|parametre_url{connexion,y})]" title="<:connexiontitle:>" 
rel="nofollow"><:connexion:></a>]
</BOUCLE_AuMoinsUneRubriqueProtegee>

C’est<BOUCLE_AuMoinsUneRubriqueProtegee(ZONES_RUBRIQUES){0,1}> qui fait tout le travail : regarder si dans la table du plugin accès restreint,
il y a au moins une ligne.

Quant à #SESSION{id_auteur}, c’est une balise du plugin sessions qui permet de savoir s’il y a ou nom un auteur de connecté.

Et il faut avoir quelque par dans le squelette l’affichage du formulaire
de login, conditionné au fait que l’on a demandé la connexion :

[(#REM) le bloc s'ouvre en milieu de page, mais bon là si on est sur / 
faut rediriger proprement bidouille si sommaire...]
[(#ENV{connexion}|=={y}|?{' ',''})
<div id="connexion">
[(#SELF|=={?connexion=y}|?{
<!--accueil-->
[(#LOGIN_PUBLIC|?)]
,
<!--autre-->
[(#LOGIN_PUBLIC)]
})]
</div>]

Enfin pour différencier les rubriques qui étaient invisibles avant la connexion, vérification que la rubrique en cours est bien dans une zone restreinte :

<BOUCLE_test(ZONES_RUBRIQUES){id_rubrique}{0,1}> Cette rubrique vous est 
réservée </BOUCLE_test>
À noter : ceci ne donne que la rubrique mère protégée, pas ses filles.

Amusez-vous bien !

XI. Astuce pour récupérer un flux RSS personnalisé

Si vous vous abonnez au flux RSS d’un site avec Accès restreint, par exemple avec Thunderbird, avec l’adresse http://monsite.net/spip.php?page=backend, vous ne verrez apparaitre dans le flux que les articles accessibles aux visiteurs non identifiés puisque, via Thunderbird, vous ne serez pas identifié sur le site.

Il est possible d’utiliser une identification HTTP afin de récupérer un flux RSS contenant l’ensemble des articles auxquels vous avez accès. ATTENTION : avec ce type d’identification, votre login et votre mot de passe seront transmis en clair dans l’URL.

Utilisez l’adresse suivante pour vous abonner au flux RSS dans Thunderbird :
http://login:motdepasse@monsite.net/spip.php?action=cookie&essai_auth_http=oui&url=spip.php?page=backend. Vous obtiendrez alors un flux comportant les articles auxquels vous avez accès. Cette astuce fonctionne avec n’importe quelle page.

XII. Options de fonctionnement des zones

Marcimat a rajouté des define pour changer le comportement des restrictions sur les zone.

Par défaut dans Acces restreint, si une rubrique 1 restreinte par une zone A englobe une sous rubrique 2 restreinte par une zone B, alors

  • A ne peut pas voir 2
  • B ne peut pas voir 1
  • On ne peut voir que sur les restrictions dont on a tous les droits : pour qu’un auteur puisse voir (2), il doit faire partie de A et de B. Pour qu’un auteur puisse voir 1, il doit faire partie de A.

Avec le define AR_TYPE_RESTRICTION
AR_TYPE_RESTRICTION = faible [4] :
on peut déjà de dire qu’une zone accède à des sous rubriques quelque soit la restriction appliquée à celle-ci en plus. Ainsi on obtient que :

  • un auteur de la zone A peut voir 2 (et 1 bien sûr), car 2 est contenu dans 1.
  • mais un auteur de B ne peut pas voir 1 (parent de 2). Il ne peut que voir 2.

Avec le nouveau define AR_TYPE_RESTRICTION_PARENTEE (en cumul avec AR_TYPE_RESTRICTION = faible)
AR_TYPE_RESTRICTION_PARENTEE = faible [5]

On peut dire qu’un auteur voyant une rubrique restreinte dans une certaine profondeur a accès aux rubriques parentes, mêmes restreintes (mais pas aux frères restreints tout de même !). Dans ce cas :

  • un auteur de A voit 2 (deja fait avec AR_TYPE_RESTRICTION = faible)
  • au auteur de B voit 1 (le parent de 2)

De la sorte, on peut imaginer des rubriques

  • [ ] Projets
    • — [ ] Projet A
    • — [ ] Projet B

Si une zone existe pour le projet A, incluant quelques personnes, et qu’une zone existe pour « Projets » incluant les « collaborateurs » : les collaborateurs peuvent voir tous les projets, les participants de A peuvent voir le projet A ET la rubrique « Projets » parente : qui ne listera que « Projet A » avec les squelettes SPIP par défaut.

Notes

[1Imaginons une rubrique 23 sécurisée par un squelette avec du code php <?php if (....) ?> pour ne pas afficher la page si l’auteur n’a pas les droits, et bien si dans un forum, par exemple, il faisait appel au modèle <article 30> ou à une autre variante, il pourrait accéder à du contenu restreint. Avec ce plugin, qui ne joue pas sur la squeletisation, tout est bien sécurisé, on peut dormir tranquilement, ce sont bien toutes les boucles qui sont filtrées.

[2Cela ne veut pas dire, pour autant, que vous êtes obligés d’utiliser les forums, mais seulement que vous pourrez octroyer des zones restreintes à de simples visiteurs

[3L’astuce pour désactiver le focus est assez fine, on a déplacé le crochet de la fonction javascript qui gère le focus.
Avec Focus

53 <script type="text/javascript"><!--
54 document.getElementById('var_login[_(#ENV{login})]').focus();
55  --></script>


Sans Focus

49<script type="text/javascript"><!--
50document.getElementById('var_login_[(#ENV{login})]').focus();
51--></script>

[4code à ajouter dans le fichier mes_options.php du SPIP
define('AR_TYPE_RESTRICTION','faible');

[5code à ajouter dans le fichier mes_options.php du SPIP :
define('AR_TYPE_RESTRICTION_PARENTEE','faible');

Discussion

267 discussions

  • 1
    dominique

    Bonjour et merci pour le plugin
    Je l’ai installé une première fois et il a bien marché
    Mais après une re-installation de spip et du plugin les articles cochés en accès réservés restent visibles
    mon site :
    http://www.nuage-pluie.com/
    J’utilise le squelette RECIT-FP
    une idée
    merci

    • As-tu correctement vidé le cache après ta réinstallation ?

      Quelles sont les rubriques qui ne sont pas censées être visibles par un visteur non authentifié ?

      Voici les secteurs qui me sont accessibles en me connectant à ton site :
      -  Aïkido
      -  Taï chi chuan
      -  Liens
      -  Mediagraphie
      -  Nuage-Pluie
      -  Qi Gong

    Répondre à ce message

  • 7

    Salut !

    Peut-être devriez-vous changer l’introduction à cet article (« ... permet de définir et de gérer des zones de l’espace public ... ») : je cherchais le filtrage de l’espace privé, et après avoir lu l’intro j’ai failli ne pas lire plus loin.

    Avec un SPIP 1.9.2a (mis à jour ce soir depuis la branche 192 SVN) j’ai installé le plugin et créé une rubrique et sous-rubrique protégées pour l’espace privé et publique. Et les rubriques sont bien invisibles pour ceux qui ne sont pas attribués à la zone créée. Mais malheureusement je vois que loggué comme admin restreint, n’étant pas membre de la zone, je peux, en allant à la page de l’auteur, m’attribuer la zone, et l’attribuer aux autres ! Tout devient visible. Ai-je raté quelque chose, ou est-ce un bug ?

    • Merci pour l’intro Paolo. C’est corrigé et dû au fait que l’acces privé restreint ne s’est fait que récémment. Pour tes remarques regardes du côté du post de Joseph LARMARANGE plus bas et http://joseph.larmarange.net/Plugin....
      Sinon il faudrait voir avec Cédric dans quelle mesure il pense pouvoir tenir compte des propositions de Joseph. Alexandra

    • LARMARANGE Joseph

      Suite à l’accord de cédric, je vais commiter sous peu les propositions de modifications annoncées plus bas.

    • Les droits des administrateurs restreints ont été modifiés sur SVN. Voir la documentation ci-dessus qui a été mise à jour en conséquence.

    • Bonsoir !

      Hmm... Cela ne marche toujours pas pour moi. J’ai supprimé les 3 tables de l’ancienne version, et la ligne dans spip-meta. Ensuite installé la nouvelle version depuis ici.

      Comme administrateur général j’ai créé une zone restreinte à la fois publique et privée. Ensuite je me suis déloggué. Puis reloggué comme admin restreint. La zone n’est pas visible - bien ! Mais je peux toujours aller à ma propre page d’auteur (d’admin restreint donc) et m’attribuer la zone restreinte, qui devient alors visible !

      Est-ce que j’ai pris le mauvais fichier, ou mal installé, ou est-ce que cette faille est toujours présente ?

    • Joseph LARMARANGE

      La modification a été effectuée sur le serveur SVN le 17 avril à 21h30 (révision 11379 - Voir la liste des modifications sur SVN.

      Au moment où j’écris, le fichier présent ici a été généré le 17 avril à 18h01 et celui présent ici à 18h30. Ils n’intègrent donc pas encore les modifs.

      Deux possibilités : récupérer la dernière version via SVN ou bien attendre la mise à jour des fichiers zip.

      Cordialement,

    • Aha ! Merci. Mais alors les infos données sur cette page, « Un site miroir contient les zip complets et détaillés (version en l’état chaque jour aux alentours de 5h) », ne sont pas justes ou bien il y a une malfonction quelque part. Car nous sommes maintenant le 19 et la date du fichier zip est toujours le 17.

    • Je viens d’installer en utilisant SVN. La nouvelle version marche très bien. Merci beaucoup !

    Répondre à ce message

  • 3
    Joseph LARMARANGE

    Afin de répondre à certains besoins personnels, j’ai apporté quelques modifications au plugin Accès Restreint de Cédric Morin.

    Les Modifications effectuées :

    Les modifications apportées sont les suivantes :
    -  Modification des droits des administrateurs restreints : dans le plugin original, un administrateur restreint peut ajouter ou retirer un auteur de n’importe quelle zone, y compris lui-même. Dans le plugin modifié, un administrateur restreint ne peut ajouter ou retirer une zone à un rédacteur seulement s’il appartient lui-même à la zone concernée.
    -  Gestion des accès publiques/privées rubrique par rubrique : dans le plugin original, une zone restreint l’accès soit à l’espace publique soit à l’espace privé. Or, il se peut que pour une rubrique donnée, on souhaite qu’elle soit accessible sur le site publique mais pas dans l’espace privée pour un groupe donné de rédacteurs. Dans le publique, les zones accessibles d’une zone sont définies séparément pour le site publique et l’espace privé, permettant ainsi une gestion plus fine des droits pour une zone donnée.
    -  Modification de l’héritage des droits : dans le plugin original, lorsqu’une rubrique est cochée pour une zone, toutes ses sous-rubriques deviennent accessibles quelque soit les restrictions posées aux autres zones. Dans le plugin modifié, une sous-rubrique non cochée dans une zone hérite de droits des rubriques parentes uniquement si elle n’est pas défini explicitement. (Voir http://joseph.larmarange.net/Plugin... pour un exemple.

    Les modifications ont été effectuées sur la version du 27 février 2007 du plugin Accès Restreint disponible sur sur Spip-Zone. Dans le code, toutes les modifications sont précédées du commentaire //JL ou //MODIF JL.

    Les modifications sont disponibles sous la forme d’un plugin. Celui-ci n’a été testé qu’avec SPIP 1.9.2. Pour plus de détails et télécharger la version modifiée : http://joseph.larmarange.net/Plugin....

    Encore merci à Cédruc pour ce très bon plugin.

    • Joseph LARMARANGE

      J’oubliai, cette version modifiée inclue également une extension de la restriction à la boucle EVENEMENTS du plugin Agenda si ce dernier est activé. La restriction porte sur le site publique uniquement. Concernant l’espace privé, l’ensemble des évènements restent visibles à tous via l’agenda interne. (Je n’ai pas encore trouvé une façon simple de filtrer les évènements sur la page calendrier).

      Au passage encore merci à Cédric Morin qui s’avère être également l’auteur du plugin Agenda.

    • Joseph LARMARANGE

      Certaines personnes me disent que je devrais commiter ces modifications sur spip-zone. Avant d’intervenir, je pose donc ici la question de savoir si je devrais commiter toutes les modifications proposées ou seulement certaines d’entre elles.

      En fonction des réponses, j’irai ensuite commiter ces propositions sur la zone.

    • wattazoum

      Je trouve triste que personne ne reponde. Je pense (mais je ne suis au’humble utilisateur ) que s’il est possible de desactiver tes fonctionnalites tu devrais les comitter, c’est toujours un + .

    Répondre à ce message

  • 3
    Rodolphe

    bonjour,
    comme d’autres sur ce forum, je constate que des fois le plugin marche et des fois non.

    pour moi :
    -  sur une site hébergé sur OVH le plugin marche parfaitement,
    -  mais sur un autre site sur Nfrance, une fois le plugin installé impossible de définir une zone restreinte, la rubrique ne reste pas cochée dans « Rubriques de la zone ».
    (dans les 2 cas c’est avec : SPIP 1.9.2a et Acces Restreint 2.0)

    si quelqu’un à trouvé la solution , ça m’aiderai bien, je n’ai pas trouvé de réponse dans le forum ci-dessous ou ailleurs sur le net.

    merci d’avance

    • J’ai exactement le même problème sur Skynet.
      Pourtant, cela marchait impec avec la 1.9.1, chez le même hébergeur.

      FDM

    • Mon hébergeur est arsys. Malgré un clic sur le bouton enregistrement et la version SPIP 1.9.2a [8878]. J’ai le même problème. En local avec une installation xampp, je ne rencontre pas ce problème.

    • Merci pour la solution, ca fonctionne parfaitement :

      « ... il faut modifier le script acces_restreint_1_9/inc/acces_restreint.php en remplacant tous les JOIN par des INNER JOIN (3 occurences). ... »

    Répondre à ce message

  • 1
    J-L Lienhard

    Cette contribution est très prometteuse et correspond exactement à ce que je cherche. J’ai encore un problème lorsque les visiteurs tentent de se connecter. Ils reçoivent le message :

    Problème d’accès à l’espace privé

    Vous avez tenté de d’accéder à l’espace privé avec un login qui ne le permet pas.

    Alors que j’aimerais justement pas que ce visiteur se connecte à l’espace privé, mais simplement accède à la partie restreinte du site.

    Il me semble avoir bien créé mon visiteur en lui donnant le droit d’accéder à la zone restreinte. J’ai imposé l’inscription obligatoire pour la participation au forum et interdit l’inscription automatique des rédacteurs, créé également un article avec un forum sur abonnement.

    Qu’ai-je oublié de faire ? Un grand merci à toute personne qui pourra me mettre sur la piste d’une solution

    SPIP 1.9.2a [8878]

    • J-L Lienhard

      Après quelques heures d’essais-erreurs, j’ai résolu mon problème. Il provenait d’une part d’une modification du nom du fichier login_public.html en formulaire_login.html d’une version à l’autre de Spip et d’autre part d’une confusion de ma part entre les balises #LOGIN_PUBLIC et #LOGIN_PRIVE

    Répondre à ce message

  • 4
    Jean-Louis

    Situation sensiblement identique à celle décrite par Jacques le 17 mars dernier : un grand bravo pour ce plugin fort utile... mais qui ne fonctionne pas tout le temps.

    Le pluggin acces restreint 2.0 et SPIP 1.9.1 rev7502 ou 1.9.2 fonctionne très bien en local sous Easyphp (version 1.8, php 4.3.10) et chez Free mais pas sur d’autres serveurs (php 4.2.2).

    Le problème : les rubriques affectées à une zone sont bien inscrites dans la base de données mais elles n’apparaissent pas colorées dans le plugin et ne sont pas masquées à l’affichage public.

    Ci dessous un extrait du fichier /tmp/spip.log correspondant à l’erreur en retour de l’inscription de rubriques sur la zone restreinte numéro 2.

    Mar 21 15:15:39 194.214.72.3 (pid 11083) Mar 21 15:15:39 194.214.72.3 (pid 11083
    ) 1064 You have an error in your SQL syntax near ’ON zr.id_zone=z.id_zone WHERE
    zr.id_zone=2’ at line 1

    Mar 21 15:15:39 194.214.72.3 (pid 11083) Mar 21 15:15:39 194.214.72.3 (pid 11083
    ) POST / www/spip/docenligne/ecrire/ ?exec=acces_restreint_edit&id_zone=2

    Mar 21 15:15:39 194.214.72.3 (pid 11083) Mar 21 15:15:39 194.214.72.3 (pid 11083
    ) - SELECT zr.id_rubrique FROM cr_docenligne.spip_zones_rubriques AS zr JOIN
    cr_docenligne.spip_zones AS z ON zr.id_zone=z.id_zone WHERE zr.id_zone=2

    Mar 21 15:15:39 194.214.72.3 (pid 11083) Mar 21 15:15:39 194.214.72.3 (pid 11083
    ) 1064 You have an error in your SQL syntax near ’ON zr.id_zone=z.id_zone WHERE
    zr.id_zone=2’ at line 1

    Merci pour la suite possible à ce témoignage.

    • Jacques

      Effectivement après plusieurs tests sur un SPIP 192a vierge + access restreint 0.2 :
      OK en local (easyphp)
      OK sur free
      Problème décrit ci dessus sur OVH dédié (readhat 7.2)

      • PHP Version 4.4.2
      • mySQL 3.23.58
        A suivre ...
    • Rodolphe

      J’ai le meme probleme que tu décris le 17 mars avec l’hébergeur Nfrance. (avec : 192a vierge + access restreint)

      j’ai fait un essai sur OVH et ça marche (type d’hébergement : start1g)

      Sur Nfrance c’est un sous-domaine, es-ce une explication possible ?

    • kagemusha

      Même problème pour moi.

      La solution qui a marché chez moi :
      Remplacer les « JOIN » par « INNER JOIN » dans inc/acces_restreint.php (3 lignes en tout).

      Certaines versions de mysql n’acceptent pas la commande « JOIN » en l’occurence la 3.23 pour mon cas.

    • Rodolphe

      Merci pour l’info, ça marche !

    Répondre à ce message

  • 1

    Bonjour,

    Tout fonctionne parfaitement en local (en 1.9.2a), mais par contre impossible de définir une zone restreinte en ligne : j’ai beau cocher une rubrique, elle n’est pas prise en compte.
    Si je retourne vers « Rubriques de la zone » rien n’est coché.

    C’est surement lié à l’hébergeur (serveur académique), mais je n’ai aucune piste à leur fournir...

    Si vous avez une idée...

    • Le problème a été identifié par les responsables du serveur.
      Voici leur réponse :
      « Le problème vient de la version du mysql que nous utilisons : il faut modifier le script acces_restreint_1_9/inc/acces_restreint.php en remplacant tous les JOIN par des INNER JOIN (3 occurences). Tout fonctionne alors beaucoup mieux. »

      Effectivement tout fonctionne correctement.

    Répondre à ce message

  • webzone

    Bonjour,

    Je teste le plugin « Accès restreint » et aussi « Accès restreint par groupes » sur deux sites de test différents, vu incompatibilité d’humeur.
    J’avais posté dans « Accès restreint par groupes » pour demander s’il y avait une possibilité de faire des accès par plage d’adresses IP (intéressant pour des Intranet d’entreprises qui ont différentes succursales).
    Voici un bout de code réunissant deux contributions trouvées sur le web, si cela peut-être utile. Par contre je ne vois pas comment les incorporer dans un plugin SPIP.

    <?php
    // code permetaant la vérifcation que l'IP est bien dans la plage
    function verifPlageIP($IP,$PlageIP) {
    	$result=TRUE;
    	$tabIP=explode(".",$IP);
    	/*echo "

    tabIP:

    ";
    	print_r($tabIP);
    	echo "

    " ;*/
    if(is_array($PlageIP))
    /*echo « 

    PlageIP :

    ";
    		print_r($PlageIP);
    		echo "

     » ;*/
    foreach($PlageIP as $valeur)
    $tabPlageIP[]=explode(« . »,$valeur) ;

    for($i=0 ;$i<4 ;$i++)
    if(($tabIP[$i]<$tabPlageIP[0][$i]) || ($tabIP[$i]>$tabPlageIP[1][$i]))
    $result=FALSE ;



    else
    $tabPlageIP=explode(« . »,$PlageIP) ;
    /*echo « 

    tabPlageIP :

    ";
    		print_r($tabPlageIP);
    		echo "

     » ;*/
    for($i=0 ;$i<4 ;$i++)
    if(($tabIP[$i] !=$tabPlageIP[$i]))
    $result=FALSE ;



    return ($result) ;

    // fonction pour trouver l’IP même derrière un proxy
    function get_ip_proxy()
    if (isset($_SERVER[’HTTP_XFORWARDED_FOR’]) && $_SERVER[’HTTP_X_FORWARDED_FOR’] !="")
    if(strchr($_SERVER[’HTTP_X_FORWARDED_FOR’],’,’))
    $tab=explode(’,’,$_SERVER[’HTTP_X_FORWARDED_FOR’]) ;
    $proxy=$tab[count($tab)-1] ;
    $realip=$tab[0] ;

    else
    $proxy=$_SERVER[’REMOTE_ADDR’] ;
    $realip=$_SERVER[’HTTP_X_FORWARDED_FOR’] ;

    elseif(isset($_SERVER[’HTTP_CLIENT_IP’]))
    $realip = $_SERVER[’HTTP_CLIENT_IP’] ;

    else
    $realip=$_SERVER[’REMOTE_ADDR’] ;

    return $realip ;

    // Mettre ici la plage IP de votre réseau local
    // $plageIP=array("deb"=>« 192.168.0.0 »,« fin »=>« 192.268.254.254 ») ;
    $plageIP=array(« deb »=>« 127.0.0.0 »,« fin »=>« 127.254.254.254 ») ;
    // ou une adresse IP seule
    //$plageIP=« 192.168.0.180 » ;

    // Trouve votre véritable adresse IP même derrière un proxy
    $yourIP=get_ip_proxy() ;
    // Ou l’entrer en dur
    //$yourIP=« 192.168.0.180 » ;

    echo « 

    Votre IP est : ».$yourIP."

    " ;
    if(verifPlageIP($yourIP,$plageIP))
    // mettre ici le code pour bonnes pages
    echo « 

    Votre adresse IP est valide !

     » ;

    else
    // mettre ici code pour re router
    echo « 

    Votre adresse IP n’appartient pas à la plage réseau autorisé !

     » ;

     ?>

    Répondre à ce message

  • Je recopie « dans son jus » cet intéressant message de ce jour sur la liste Spip-user

    De : BoOz
    Date : 4 avril 2007 14:18:16 GMT+02:00
    À : spip@rezo.net
    Objet : Rép : [Spip] Pour plug in « accès restreint ». Re : principe des mots clés.

    Hello Agnès,

    Alors le plugin acces restreint ne fonctionne pas avec un mot clé, mais avec des rubriques.

    C’est à dire qu’il faut placer le contenu restreint dans une rubrique, et dans le plugin definir un acces restreint sur une zone a laquelle appartient cette rubrique.

    Ensuite, il faut ajouter chaque utilisateur autorisé dans la zone d’acces restreint en question.

    Bref, c pas simple simple.

    Sinon tu as le plugin acces restreint par groupe. Il est un peu different dans le sens ou c’est le statut des auteurs qui determine s’il y a acces ou pas. Essaye ca peut etre ?

    Enfin, tu peux le faire avec une ruse, en ajoutant un code de redirection dans la page article.html et idem dans rubrique.html,
    spipcarto a donné les boucles récemment :

    Spipcarto a écrit :

    Depuis Spip 1.7.2, je fais du squelette par mot clé avec ... un squelette. Ce squelette s’est largement simplifié avec les GET et les SET d’ailleurs.

    J’ai un groupe « _sq_squelettes » avec des mots du genre « _large »,
    « _agenda », ...
    En 1.9.2, voila ce que ca donne pour rubrique.html :

    #CACHE{7*24*3600}
    <BOUCLE_rubrique_principal(RUBRIQUES){id_rubrique}>
    <BOUCLE_MOT_SQUELETTE(MOTS){id_rubrique}{type=_sq_squelettes}{0,1}>
        #SET{sq_squelette,rubrique#TITRE}
    </BOUCLE_MOT_SQUELETTE>
        #SET{sq_squelette,rubrique}
        <BOUCLE_HIERARCHIE(HIERARCHIE){inverse}>
    
    <BOUCLE_MOT_SQUELETTE_PARENT(MOTS){id_rubrique}{type=_sq_squelettes}{0,1}>
    	[(#GET{sq_squelette}|=={rubrique}|?{' ',''})
       		#SET{sq_squelette,rubrique#TITRE}
    	]
         </BOUCLE_MOT_SQUELETTE_PARENT>
        </BOUCLE_HIERARCHIE>
    <//B_MOT_SQUELETTE>
    <INCLURE{fond=#GET{sq_squelette}}{id_rubrique}{self=#SELF}>
    </BOUCLE_rubrique_principal>

    Avec un mot « _sq_squelettes:_agenda » sur la rubrique ou un de ses parents, c’est rubrique_agenda.html qui est appelée.

    Attention par contre à passer tous les parametres necessaires à l’inclusion.

    en 1.9.3, ca donnera : <INCLURE{fond=#GET{sq_squelette}}{env}>

    Chaque nouvelle version apporte son lot de simplification.

    @++

    PS : pour l’article, ca doit donner

    #CACHE{7*24*3600}
    <BOUCLE_MOT_ARTICLE(MOTS){id_article}{type=_sq_squelettes}{0,1}>
        #SET{sq_squelette,article#TITRE}
    </BOUCLE_MOT_ARTICLE>
        #SET{sq_squelette,article}
       <BOUCLE_ART(ARTICLES){id_article}>
        <BOUCLE_HIERARCHIE(HIERARCHIE){inverse}>
    
    <BOUCLE_MOT_SQUELETTE_PARENT(MOTS){id_rubrique}{type=_sq_squelettes}{0,1}>
    	[(#GET{sq_squelette}|=={#TETRIS_TEMPLATE/article}|?{' ',''})
       		#SET{sq_squelette,#TETRIS_TEMPLATE/article#TITRE}
       	]
         </BOUCLE_MOT_SQUELETTE_PARENT>
        </BOUCLE_HIERARCHIE>
       </BOUCLE_ART>
    <//B_MOT_ARTICLE>
    <INCLURE{fond=#GET{sq_squelette}}{id_article}{self=#SELF}>

    PS2 : rien de tout cela n’est testé, comme d’ab, mais sauf faute de frappe, ca doit etre ca.

    Répondre à ce message

  • Je ne parviens pas à afficher les rubriques définies dans les zones restreintes et seulement ces rubriques là. Pour l’instant, j’ai défini ces rubriques par leur numéro (il n’y en a que deux heureusement) mais j’aimerai autant pouvoir identifier seulement les rubriques à accès restreint. Peut-être que la solution est très simple... (c’est pour mettre dans une « boîte à outils » dans le menu de navigation).

    Si la question a déjà été posée (et donc la réponse donnée...), je ne l’ai pas trouvée.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom