Historique
Ce plugin reprend la contrib Créer des groupes, limiter l’accès aux rubriques et aux articles... (version 0.7 réservée aux versions 1.8 de spip) dont il constitue la version 1.0. Ce plugin est compatible avec la version 1.9.2 de spip. Il n’a pas été complètement testé avec la version SVN de spip 1.9.3. (Une version compatible spip 1.9.1 est disponible également mais elle n’est plus maintenue).
[Mises à jour]
- la version [1.0.1] remplace la version 1.0 pour permettre d’assurer le filtrage des articles en mode « révision ». Voir ce forum pour plus de détails.
Il est vivement conseillé de procéder à la mise à niveau des plugins v1.0, la mise à jour des fichiers n’entraînera pas de modification de vos groupes et restrictions existant. - passage à la version [1.0.2] qui permet l’utilisation du critère tout_voir et du filtre accesgroupes_visualise pour permettre l’affichage d’une liste de toutes les rubriques/articles/brèves y compris les restreintes.
- passage à la version [1.0.3] compatible spip 1.9.2.
- passage à la version [1.0.31] qui corrige un certain nombre de bogues.
But :
Un des besoins fréquent lorsque l’on gère un site sous SPIP est de pouvoir restreindre l’accès à des rubriques afin qu’elles ne soient accessible qu’à certains utilisateurs. De façon complémentaire, pour permettre une gestion de ces accès restreints complète, simple et ergonomique, il s’avère indispensable que les utilisateurs « autorisés » soient gérés par groupes.
Cette contrib répond à ce besoin en essayant d’offrir le maximum de possibilités tant dans la gestion des utilisateurs autorisés que dans les restrictions d’accès, le tout sans avoir à intervenir sur les squelettes utilisés.
Pour permettre de réaliser des contenus totalement protégés, les restrictions d’accès doivent pouvoir s’appliquer aussi bien à l’espace privé qu’à l’espace public.
Pour les utilisateurs de la contrib (v0.7 ou v0.61), les nouveautés de cette version 1.0 (plugin) sont signalées par un : [v1.0]
Ce plugin permet :
- de créer des groupes d’auteurs : ces groupes peuvent êtres constitués d’utilisateurs, d’autres groupes (sous-groupes) ou de statuts (c’est à dire que tous les utilisateurs d’un statut donné appartiennent à ce groupe). Cette organisation génère elle-même d’autres contraintes techniques à gérer : ainsi il ne doit pas être possible d’inclure le groupe « pére » dans le groupe « fils » si celui-ci contient déja « fils » (sinon on risque la boucle infinie lors de la routine de contrôle d’accès).
- de limiter l’accès à certaines rubriques « rubriques restreintes » aux groupes créés : cette limitation d’accès peut s’appliquer soit dans la partie publique ET dans la partie privée, soit à l’une OU l’autre de ces parties séparément.
Les rubriques « à accès restreint » sont gérées automatiquement : dès qu’au moins un groupe contrôle une rubrique, cette dernière devient alors à « accès restreint » et elle est inaccessible pour les lecteurs n’appartenant pas à ce groupe. Inversement, si aucun groupe ne « contrôle » une rubrique, elle est accessible par tous les internautes.
Le fonctionnement du système de restriction d’accès est conçu de manière à ce que toutes les sous-rubriques d’une rubrique à accès restreint soient elles aussi restreintes : principe « d’héritage des restrictions ».
[v1.0] Ce plugin permet également qu’un admin général puisse créer des groupes en ayant la possibilité d’en « déléguer » ensuite la gestion à un admin restreint, ce qui correspond à une sorte de « changement de propriétaire » d’un groupe.
Un exemple de situation à gérer :
Pour mieux cerner le fonctionnement, voici le cahier des charges auquel cette contrib tente de répondre :
- un SPIP est installé sur le site d’un établissement scolaire (disons un lycée) pour permettre la publication de contenus élaborés par les profs et/ou les élèves.
- Ce SPIP comprend une rubrique par discipline (Anglais, Lettres, SVT...), tous les profs d’une discipline sont administrateurs de la rubrique de leur discipline afin qu’il puissent gérer/modérer les publications des élèves dans celle-ci. Tous les élèves sont rédacteurs dans ce SPIP, les parents peuvent avoir un compte visiteur.
- On souhaite que les profs d’une discipline puissent, s’ils le veulent, créer des sous-rubriques à accès réservé selon leurs besoins. Par exemple une sous-rubrique « travail en cours » dans laquelle ils pourront mettre au point ensemble les sujets de leurs prochains devoirs ou les corrections de ceux-ci. Il semble évident qu’il ne faut PAS que les élèves (comptes auteurs) aient un accès à cette sous-rubrique que ce soit dans la partie publique ou la partie privée !
- On veut également qu’il soit possible d’avoir des rubriques à accès réservé uniquement aux profs (comptes admins restreints) pour qu’ils puissent publier des infos qui ne concernent pas les élèves (documents administratif, comptes-rendus de réunions syndicales, préparation de projets pluridisciplinaires...).
- Il doit également être possible d’avoir des rubriques dans lesquelles les profs peuvent préparer des documents (par exemple les comptes-rendus des conseils de classe) qui seront accessibles une fois publiés (donc accès non-restreint dans la partie publique) mais confidentiels tant qu’ils sont en mode « en cours de rédaction » ou « proposé à l’évaluation » (donc accès restreint dans la partie privée).
- Il faudra aussi une rubrique dont l’accès est réservé à tous les utilisateurs inscrits dans l’établissement (profs = admins restreints + élèves = auteurs + parents = visiteurs) dans laquelle on mettra, par exemple, les emplois du temps qui ne seront donc pas visibles par les « extérieurs » à l’établissement.
- Enfin, il doit également être possible de créer des rubriques réservées :
- aux élèves d’une classe (un groupe « classe »),
- à plusieurs élèves et quelques profs, par ex le groupe « club informatique »
- aux profs de 2 ou 3 disciplines (par ex« profs de sciences », cad les profs de SVT + Physique/Chimie + Maths). On obtient donc un groupe de groupes
- ...
- l’administrateur général du spip doit également pouvoir créer des groupes dont il déléguera ensuite la gestion aux admins de rubriques
- avec comme circonstance aggravante que les admins généraux doient pouvoir « s’inviter » dans n’importe quel groupe pour consulter le contenu des rubriques à accès réservé.
Installation du plugin acces groupes :
[v1.0] Comme tous les plugins : récupérez le dernier zip à jour de cette contrib sur https://plugins.spip.net/accesgroup... ou sur le miroir http://miroirspip.ventre.name/build..., décompactez le et placez le dossier « acces_groupes » obtenu dans votre répertoire /plugins (à créer à la racine de votre spip si nécessaire), rendez vous sur l’interface de gestion des plugins (menu Configuration > Gestion des plugins), cochez le plugin « acces_groupes » et validez.
Vous devriez voir apparaître une icone supplémentaire dans le menu « auteur » pour les administrateurs (de rubriques et généraux) (merci à Litteul Kevin pour son icone nettement plus « classe » que mes pauvres bidouillages...)
Du point de vue de la base de données, ce plugin installe 3 tables supplémentaires : spip_accesgroupes_auteurs, spip_accesgroupes_acces et spip_accesgroupes_groupes, sachant que grâce au nouveau système de gestion des requètes MySQL par le core de spip 1.9 (« SPIP est grand et ses codeurs sont mes prophètes ! »), le préfixe ’spip’ sera automatiquement remplacé par le préfixe des tables que vous avez défini dans votre fichier /ecrire/mes_options.php (variable $table_prefix) si vous gérez plusieurs spip avec une seule base de données.
[*ATTENTION !!!*]
- ce plugin n’est PAS compatible avec le plugin « acces restreint » puisqu’il surcharge les mêmes fonctions que lui pour le filtrage des BOUCLES (affichage de l’espace public) : si celui-ci est actif, vous devez d’ABORD le désactiver (la vérification n’est pas gérée par le plugin) !!!
- Si vous procédez à une mise à jour depuis une version antérieure dans le cas ou votre spip serait passé de la version 1.8 (où vous utilisiez la version 0.7 ou 0.61 de la contrib originale) à la 1.9, vous devez d’ABORD procéder à la mise à jour des tables utilisées. Pour cela connectez vous sur le script /plugins/acces_groupes/maj_tables.php qui permet de « patcher » les tables à partir de celles de la version 0.7 ou 0.61. Ce script est extrèmement sommaire [1] et vous demandera de saisir les paramètres de connexion à votre base de données MySQL pour éviter que n’importe qui puisse le lancer. Une fois ce script joué, vous pouvez effacer le fichier maj_tables.php.
4. Fonctionnement obtenu lorsque l’on intègre ce plugin :
- pour un internaute qui n’est pas authentifié toutes les rubriques restreintes (ce qui inclus les sous rubriques, les articles, les brèves, les liens ...) seront [v1.0] invisibles à ce visiteur dans la partie publique.
-
pour un visiteur authentifié, seules les rubriques restreintes auxquelles il n’a pas accès (via son appartenance à un groupe ou son statut) seront invisibles.
-
pour les auteurs authentifié : idem les visiteurs pour la partie publique,
en revanche pour la partie privée, les rubriques à accès restreint sont (pour l’instant !) visibles mais non accessibles.
-
pour les administrateurs de rubriques (« admin restreint ») : idem les auteurs SAUF pour les rubriques dont ils sont administrateurs. Pour ces rubriques, ils ont un accès dans la partie publique et la partie privée MEME s’ils n’appartiennent pas à un groupe autorisé à l’accès. Il paraissait en effet logique qu’un admin de rubrique ait forcément accès aux rubriques dont il à la gestion. Il peut également créer des groupes (ou utiliser des groupes existants) pour limiter l’accès aux rubriques qu’il administre et à leurs sous-rubriques. Il ne peut modifier que les groupes et sous-groupes qu’il a créé (= dont il est le « propriétaire »).
-
pour les administrateurs généraux (« admin général »), idem les auteurs mais ils peuvent accéder au gestionnaire de groupes pour modifier n’importe quel groupe et donc s’ajouter aux utilisateurs autorisés. Un admin général peut ainsi visiter/modérer une rubrique à accès restreint MAIS il deviendra alors visible dans la liste des utilisateurs autorisés, ce qui permet au « propriétaire » d’une rubrique restreinte (admin restreint) de savoir que l’admin général s’est « invité » dans sa rubrique.
Concernant l’intégration des statuts dans un groupe :
l’idée est la suivante : TOUS les utilisateurs du statut sélectionné sont membres du groupe. Cela implique qu’ils ont donc TOUS accès aux rubriques réservés à ce groupe.
Par exemple si un admin choisit de faire un groupe « tous les admins restreints » dans lequel il intègre le statut « Administrateurs » et qu’il donne l’accès à ce groupe pour la rubrique « le coin des admins », on aura comme résultat que tous les admins du SPIP (restreints ou généraux) peuvent accéder à cette rubrique mais que ni les visiteurs ni les auteurs ne pourront la visiter. Mais si l’administrateur le souhaite, il peut également intégrer l’auteur Toto dans ce groupe afin de lui permettre d’accéder aussi à cette rubrique.
L’interface de gestion des groupes et des rubriques restreintes :
- Pour rendre les chose plus faciles à apréhender (l’imbrication groupes/sous-groupe peut devenir complexe, les restrictions des rubriques multiples...), l’interface de gestion des groupes (exec=accesgroupes_admin) intègre :
- l’affichage de la liste des groupes et des rubriques qu’ils contrôlent
- l’arborescence des groupes/sous-groupes.
-
Chaque rubrique à accès restreint peut être configurée pour que la restriction porte soit sur la partie privée, soit sur la partie publique, soit sur les 2 (privé + public). Il est possible (pour un admin général ou pour un admin de rubrique dans une rubrique qu’il administre) de configurer une restriction d’accès sur une sous-rubrique d’une rubrique elle-même déja restreinte. Néanmoins, le principe « d’héritage des restrictions » d’une rubrique sur ses sous-rubriques impose les règles suivantes :
- rubrique parent restreinte « privé + public » => sous-rubrique restreinte obligatoirement « privé + public »
- rubrique parent restreinte « privé » uniquement => sous-rubrique restreinte « privé » ou « privé + public »
- rubrique parent restreinte « public » uniquement => sous-rubrique restreinte « public » ou « privé + public »
-
Les administrateurs de rubriques ne peuvent modifier QUE les groupes qu’ils ont eux-même créés (= propriétaires). Cela permet de rester cohérent avec le fonctionnement de l’administration des rubriques : ils ne peuvent interdire l’accès qu’a l’intérieur de leurs rubriques. Ils peuvent utiliser des groupes créés par d’autres admins mais ne peuvent les modifier.
-
[v1.0] Pour simplifier la vie des admins de rubriques, un admin général peut créer un groupe, lui attribuer des rubriques en accès restreint puis transférer la « propriété » de ce groupe à un admin de rubrique : celui-ci pourra alors gérer ce groupe comme s’il l’avait créé lui même.
-
Chaque groupe peut être configuré pour permettre aux utilisateurs n’ayant pas le droit d’accès à une rubrique d’envoyer un message au propriétaire du groupe demandant leur intégration dans celui-ci. Cette situation va se rencontrer principalement dans l’espace privé (les rubriques restreintes étant visibles dans les listes de rubriques/sous-rubriques) mais également dans l’espace public pour un utilisateur qui suivrait un lien vers une rubrique protégée (si le squelette le prévoit, cf « Type de filtrage et squelette » ci-dessous).
Ce paramètre permet d’afficher un formulaire de demande d’inscription dans le groupe lorsque l’utilisateur ne peut accéder à une rubrique. Ce message sera consultable par le propriétaire du groupe (si c’est un admin de rubrique) ou par n’importe quel admin général (si le groupe est créé par un admin général) dans la messagerie de l’interface privée, il comporte un lien direct vers l’interface de gestion du groupe concerné.
Les auteurs en attente d’intégration sont listés dans cette interface et peuvent être intégrés ou rejetés en un clic.
[v1.0] Lorsque le propriétaire du groupe aura rejeté ou accepté la demande d’inscription de l’auteur, le message de demande sera automatiquement effacé.
Type de filtrage et squelette :
[v1.0] Etant donné que ce plugin filtre directement les BOUCLES qui génèrent le contenu de l’espace public rendant invisibles celles qui sont restreintes pour un utilisateur non-authentifié, vous avez le choix entre 2 types de filtrages :
- Un filtrage fort : pas d’indication qu’un contenu existe mais qu’il n’est pas accessible (page 404 si un utilisateur non-autorisé essaye d’accéder directement au contenu d’une rubrique restreinte, par ex en suivant un lien ou un signet de son bookmark). Si vous ne souhaitez pas modifier votre squelette, c’est cette solution qui sera retenue par défaut.
Pour rendre les choses plus ergonomiques, vous devriez donc 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. Pour cela utilisez par exemple la balise #LOGIN_PUBLIC (cf cet article de spip-contrib pour plus d’infos).
-
Un filtrage avec information : si l’internaute essaye d’accéder au contenu d’une rubrique restreinte alors il se retrouve sur une page l’informant qu’il est nécessaire de s’identifier pour accéder au contenu. Si une fois connecté il ne fait pas partie des utilisateurs autorisés, alors il aura éventuellement le formulaire de demande d’intégration au groupe (selon la config du groupe, cf paragraphe précédent).
Pour obtenir ce fonctionnement vous disposez des filtres « accesgroupes_article_restreint », « accesgroupes_rubrique_restreinte » et « accesgroupes_breve_restreinte » qui vous permettent d’intégrer dans vos squelettes des pages « article.html », « rubrique.html » ou « breve.html » le formulaire de #LOGIN_PUBLIC (si l’utilisateur n’est pas connecté) ou (selon config) le formulaire de demande d’accés.
Pour réaliser cette intégration dans ces pages, il vous suffit de rajouter aux BOUCLES principales de ces pages le code suivant (exemple pour la page article.html) :
<!-- fin du fichier = fin de la boucle générale de la page -- >
</BOUCLE_article_principal>
<!-- code à rajouter -- >
[(#ID_ARTICLE|accesgroupes_article_restreint|?{' ',''})<INCLURE{fond=inc_accesgroupes_login}{skel=#CHEMIN{inc_accesgroupes_login}}>]
<//B_article_principal>
Comme le montre le code ci-dessus, vous ajoutez donc à la BOUCLE_article_principal (celle qui englobe TOUTE la page) une condition en cas de retour vide (cad en principe affichage de la page 404 : « page non trouvée ») qui permet d’INCLURE le fichier inc_accesgroupes_login.html (situé à la racine du répertoire /plugins/acces_groupes) dans le cas où l’absence de page est due à une restriction d’accès et non pas à une page vraiment absente.
La page inc_accesgroupes_login.html livrée avec le plugin est (volontairement) dépouillée, ce qui vous laisse la possibilité de la « customiser » selon vos goûts et votre charte graphique.
Fonctionnement du plugin :
Les filtrages des parties publiques et privée reposent sur 2 principes différents (pour l(instant !) :
- Pour la partie privée, peu de modifications par rapport aux versions précédentes de cette contrib : on vérifie dans les pages de gestion des articles (exec=articles et exec=articles_edit) , rubriques (exec=naviguer et exec=rubriques_edit) et breves (exec=breves_voir et exec=breves_edit) si l’élément dont on affiche la page id_article=xxx par ex) fait partie d’une rubrique à accès restreint (en fonction de l’id_auteur et de son appartenance aux groupes/statuts) et si c’est le cas on envoie le message de restriction d’accès : jusque là rien de bien compliqué...
- [v1.0] Pour la partie publique les choses se compliquent puisqu’il faut gérer le cache... Et pour « rendre à César ce qui appartient à César » il me faut ici remercier Cedric Morin pour son système de filtrage mis au point pour le plugin « accès retreint » qui permet de surcharger directement les requêtes SQL des BOUCLES de spip. Cela permet donc d’exclure des résultats renvoyés par la base de données tous les éléments appartenant à une rubrique à laquelle l’utilisateur n’a pas accès (soit il n’est pas connecté, soit il ne fait pas partie d’un groupe autorisé). Ce code est bien évidemment adapté au fonctionnement par groupe (alors que le plugin "accès restreint fonctionne par zones) mais reste le même dans son principe de filtrage. Je cite donc textuellement l’explication donnée par l’inventeur de ce système cf doc du plugin Accès restreint :
« 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 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. »
Donc vous pouvez dormir sur vos deux oreilles : pas de fuites possibles !
Du point de vue du cache, pour minimiser son volume tout en obligeant le recalcul des pages selon les droits de l’utilisateur, (et en utilisant un principe toujours pompé sur le plugin accès restreint !), il sera créé un fichier de cache par combinaison de rubriques interdites : donc si un utilisateur affiche une page, celle-ci sera tirée du cache correspondant au groupe de rubriques auxquelles il a accès, ainsi là également, pas de risque d’indiscrétions.
Outils à disposition pour les squelettes :
[v1.0.2]Selon le type de site utilisant ce plugin il peut apparaître le besoin de vouloir afficher une liste intégrale des rubriques (ou articles, brèves) c’est à dire y compris les éléments à accès restreint qui sont normalement invisibles. La version [1.0.2] intègre donc le critère tout_voir qui permet de réaliser cela [2].
De façon complémentaire, si on utilise ce critère il est utile de pouvoir « marquer » par une icone les titres des éléments à accès restreints : le filtre |accesgroupes_visualise, utilisable sur les #BALISEs des boucles ARTICLES, RUBRIQUES ou BREVES, permet d’ajouter une icone (par défaut cadenas-24.gif) devant la balise si l’élément fait partie d’une rubrique à accès restreint.
Exemple typique d’utilisation de ce critère et du filtre : modification du fichier inc-rubriques.html qui fait le menu latéral des rubrique de la dist :
<B_rubriques>
<div class="rubriques">
<h2 class="menu-titre"><:rubriques:></h2>
<ul>
<BOUCLE_rubriques(RUBRIQUES) {racine} {par num titre, titre}{tout_voir}>
<li>
<a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE|couper{80}|accesgroupes_visualise{#ID_RUBRIQUE})]</a>
<B_sous_rubriques>
<ul>
<BOUCLE_sous_rubriques(RUBRIQUES) {id_parent} {par num titre, titre}{tout_voir}>
<BOUCLE_test_expose(RUBRIQUES) {id_enfant}{tout_voir}>#EXPOSE{' '}</BOUCLE_test_expose_total>
<li><a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE|couper{80}|accesgroupes_visualise{#ID_RUBRIQUE})]</a>
<BOUCLE_re(BOUCLE_sous_rubriques){tout_voir}></BOUCLE_re>
</li>
</B_test_expose>
</BOUCLE_sous_rubriques>
</ul>
</B_sous_rubriques>
</li>
</BOUCLE_rubriques>
</ul>
</div>
</B_rubriques>
Remarque : le paramètre #ID_RUBRIQUE du filtre accesgroupes_visualise est obligatoire !
Si l’image (cadenas) utilisée ne vous plait pas, ce filtre vous offre la possibilité de choisir un autre fichier image en passant le nom de ce fichier en second paramètre du filtre. Exemple pour utiliser le fichier cadenas-petit.png placée dans le répertoire /img de votre dossier de squelette :
[(#TITRE|couper{80}|accesgroupes_visualise{#ID_RUBRIQUE, #CHEMIN{img/cadenas-petit.png}})]
Ce qu’il reste à faire :
- Ainsi que je le mentionne par 2 fois plus haut, l’idée pour la suite des développements est de réaliser un filtrage complet de l’espace privé afin que, comme pour l’espace public, un utilisateur ne voit que les rubriques auxquelles il à accès. Cela concernerait donc la liste des rubriques affichées dans la page d’accueil de /ecrire, les sous-rubriques affichées dans /exec=naviguer, les rubriques et articles affichés dans /exec=articles_tous, le navigateur rapide de rubriques du bandeau et surtout le mini-navigateur ajax de choix de la rubrique lors de la création d’un article ou d’une sous-rubrique (afin d’empécher un auteur de créer un article dans une rubrique à laquelle il n’a pas accès, ce qui, dans cette version, l’empèche ensuite d’y accéder dès qu’il l’a enregistré une fois).
- comme suggéré dans ce message du forum, la prochaine version devrait intégrer des groupes basés sur l’adresse IP du poste connecté (groupe = plages d’adresses IP)
Cela permettra de gérer des restrictions d’accès différents selon que l’accès au spip se fait depuis l’intranet ou internet ou selon le sous-réseaux de l’intranet etc...
Pour cette partie, soyez patients : on y travaille !
- comme suggéré par le forum public de la version précédente de cette contrib on pourrait aussi imaginer :
- que les restrictions d’accès puissent s’appliquer au niveau des articles (et pas seulement au niveau des rubriques)
- que les groupes puissent êtres récupérés à partir d’un LDAP
Pour ces 2 points, on y travaille PAS mais toutes les bonnes volontées sont les bienvenues... et comme pour beaucoup d’autres plugins, afin de faciliter le developpement collaboratif, vous trouverez l’ensemble des fichiers en cours sur le SVN de spip-zone !
- et, bien sûr, toutes les traductions du fichier de langue sont également les bienvenues (le fichier accesgroupes_en.php livré avec cette version est super incomplet...)
Discussions par date d’activité
146 discussions
Bonjour, et merci pour ce super plugin ! Le critère tout_voir de la version 1.0.2 est vraiment une bonne idée.
J’ai cependant un petit problème...
J’ai ajouté aux pages « articles », « rubriques » et « brèves » le code
de « filtrage avec informations » dans la boucle qui va bien afin d’être envoyé sur le formulaire de login, et ça fonctionne très bien dans le cas où l’on tente d’accéder à une ressources restreinte.
Par ailleurs, si je tente d’appeler une page qui n’existe pas, par exemple spip.php ?page=agendas à la place de spip.php ?page=agenda, j’ai la page 404. Tout va bien.
Par contre si maintenant j’appelle un article n°100 qui n’existe pas (spip.php ?article100) j’ai une page blanche...
Si j’enlève le code de filtrage, je retrouve ma page 404 dans les deux cas...
C’est quoi mon erreur ?
Merci d’avance !
erreur non-reproductible de mon côté... Désolé mais si j’ajoute :
en fin du fichier article.html j’obtient (comme prévu !) la page 404 pour une page qui n’existe pas (http://extranet-eze.dyndns.org/port...) et la demande de login si j’essaye d’accéder à une rubrique protégée (http://extranet-eze.dyndns.org/port...)...
Alors cette erreur n’étant pas (à priori !) liée à un bogue, elle doit venir de ta config... Tu dois regarder du côté de ton squelette d’abord puis (éventuellement...) si tu n’as pas un plugin qui « trafique » le squellette de la page 404 (fichier 404.html).
Je ne doute pas que l’erreur soit de mon côté, mais j’aurai besoin de quelques conseils pour la trouver...
Voici ce que j’ai fait (en local) :
- J’ai retiré mon squelette, et utilisé la « dist »
- J’ai ajouté le filtrage
[(#ID_ARTICLE|accesgroupes_article_restreint|
etc... dans les pages article et rubrique de la dist- J’ai désactivé de tous les plugins, sauf le tiens...
- J’ai vidé les caches se Spip et du navigateur.
Résultat : même problème de page blanche quand j’appel un article ou une rubrique qui n’existe pas...
En fait si je regarde le code source de cette fameuse page blanche, je constate que je suis arrivé dans la boucle
</BOUCLE_article_principal>...<//B_article_principal>
, mais que rien ne se passe (je n’ai que les commentaires que j’y ai placé, sans aucun code).Les questions que je me pose sont les suivantes :
- quel est le mécanisme d’appel de la page 404 dans le cas d’un article qui n’existe pas : la page article est-elle appelée, ou l’erreur est-elle détectée avant ?
- Autrement dit, le code ajouté en fin de page gère-t-il à la fois le cas d’un article restreint ou absent, ou seulement restreint ?
Merci d’avance pour tes réponses
Je me répond à moi même car j’ai trouvé :
J’avais placé un commentaire avant la ligne de filtrage qui était encadrée avec :
<!-- mes commentaires -->
Que j’ai remplacé par :
[(#REM) mes commentaires ]
et ça marche !
Etonnant non ? D’autant que j’ai des commentaires utilisant la première syntaxe partout dans cette page....
Répondre à ce message
Bonjour
Ce plug in marche du tonerre, cependant comment faire pour éviter que le auteurs ou appartenant a un groupe ne voit tte la liste déroulantes des autres rubriques ?
Car lorsque je choisi d’écrire un nouvel article j’ai tjrs la posibilité de rentrer ds n’importe quelle rubrique, bien sûr le plug in a fait que je ne peux pas poster mais cela est troublant pour les utilisateurs il parait... auriez vous une idée pour m’aider à résoudre ce soucis ?
cette question à déja été traitée dans ce forum : http://www.spip-contrib.net/Le-plug...
Pour aller plus loin : tu peux essayer la version 1.1 qui assure le masquage des rubriques restreintes dans la liste de choix des rubriques lors de la création d’un nouvel article. Cette version (svn ://zone.spip.org/spip-zone/_plugins_/_dev_/acces_groupes) est un essai « cul de sac » vu les contraintes de mises à jour qu’elle imposerait lors des évolutions des versions de spip. Elle n’est accessible que par SVN, et son développement est stoppé en attendant la squelettisation de l’espace privé... donc AUCUNE garantie quand à son fonctionnement !
Problème similaire avec le squelette ’’MiniGriSpip’’.
Les articles sont invivibles mais le menu affiche toutes les entrées, même celles inaccessible :(
En fait, ce n’est pas le même problème, c’est sur mon site public que le menu ne se met pas à jour, j’ai du rater une étape :(
J’ai règlé le problème en changeant de squelette :)
J’aimerais importer mes rédacteurs et mes administrateurs depuis un fichier csv.
En retouchant le plugin « Importer des auteurs », j’ai réussi à importer les rédacteurs et auteurs avec leurs mots de passe.
Maintenant, j’aimerais importer les groupes (profs, eleves...) et les sous-groupes (classes, matières...) mais je ne sais pas quels champs renseigner dans « spip_accesgroupes_auteurs, spip_accesgroupes_acces et spip_accesgroupes_groupes ».
Je ne sais même pas si ce sont les seuls fichiers à renseigner :(.
Une petite aide m’aiderais, csv2spip n’est pas encore près
tu tombe à pic : je suis en train de finaliser la version plugin de csv2spip qui permet de créer automatiquement les groupes de acces_groupes à partir des sous-groupes déclarés dans le fichier CSV que tu importe.
D’ici 1 ou 2 jours ça sera testable : tu sera alors vraiment le bienvenu pour faire le bèta-testeur ! Je poste sur ce forum dès que le zip du plugin csv2spip sera disponible.
J’attends avec impatience :)
hé génial ! toi aussi tu tombes a pic je suis très interressée :)
tu as règlé le problème des rubriques ?? tu as fait comment ds ton squelette ? ç’a m’interresse grandement je frôle la déprime avec mon problème
helas je n’ai pas svn et effectivement la version 1.1 est trop contraignante, que puis je faire ? attendre la squelettisation du côté privée ? je m’y atelerais bien mais j’ai pas les épaules en spip pour hélas ?
Il me faut absolument mes groupes pour la semaine prochaine, je vais chercher comment les créer automatiquement (600 utilisateurs à placer dans 1 groupe et 1 sous-groupe :( pas envie de le faire à la main).
Testerez csv2spip quand il sera là
ça fait déja au moins 10 jours que la version « pre-released » de csv2spip en plugin est sur la zone : svn ://zone.spip.org/spip-zone/_plugins_/_dev_/csv2spip . Cette version est opérationnelle, il ne doit rester que quelques petits problèmes lors de la mise à jour des rubriques d’admins restreints (mais à priori puisque tu es à la phase première création des comptes, tu n’es pas concerné).
Puisqu’apparemment tu n’as pas été trifouiller dans la zone pour trouver cette version, j’en conclu que tu n’utilise pas SVN et que tu attend donc un zip... c’est donc par là : http://extranet-eze.dyndns.org/port...
Répondre à ce message
Cet excellent plugin semble fonctionner parfaitement chez moi, mais avec ce curieux avertissement dont je ne sais que faire :
Warning : file(../plugins/plugins_stable/plugin.xml) [function.file] : failed to open stream : No such file or directory in /home/cedesguin/domains/desguin.net/public_html/spip/plugins/plugins_stable/acces_groupes/exec/accesgroupes_admin.php on line 482
Warning : Invalid argument supplied for foreach() in /home/cedesguin/domains/desguin.net/public_html/spip/plugins/plugins_stable/acces_groupes/exec/accesgroupes_admin.php on line 484
Je précise que, bien entendu, le fichier « accesgroupes_admin.php » est bien présent là où il est attendu.
facile : tu as un plantage sur l’ouverture du fichier plugin.xml que la fonction exec_accesgroupes_admin() utilise pour déterminer quelle est la version en cours (1.0, 1.0.1 ...) et l’aficher dans le cadre de gauche (dernière ligne : « Version : 1.xx »)... L’explication du bogue est elle également simple : vu que le plugin est dans /plugins/plugins_stables/acces_groupes ça met en erreur l’ouverture du fichier plugin.xml qui est censé être dans /plugins/acces_groupes (ou plus précisément dans un répertoire directement dans /plugins).
Disons que c’est pas une erreur « grave » mais que tu met le doigt sur les limites de la bidouille utilisée pour récupérer la version indiquée dans le fichier plugin.xml...
Alors 3 solutions :
bref, t’as le choix... mais autant te dire que ma préférence va à la 3e solution ;-)
Mille mercis. Étant à la fois surbooké et fainéant, j’opte pour la solution 1.
Désolé ;-)
bonjour j’ai le même problème...que cy_altern
Répondre à ce message
Bonjour,
Est il possible de brancher ce plugin sur une base d’utilisateur Invision Power Board ?
Cordialement,
Techniquement ce genre de connexion est toujours possible mais ça nécessitera de remplacer toutes les requêtes MySQL qui font appel à la table spip_auteurs par des requêtes équivalentes dans la base utilisateur de IPB... avec tous les problèmes de correspondance de champs entre ces 2 tables (pour mémoire, acces_groupes utilise les champs nom, id_auteur, statut de la table spip_auteurs). De plus ça nécessitera aussi des correspondances plus « acrobatiques » pour les tables spip_auteurs_rubriques et spip_auteurs_messages.
D’un point de vue licence, vu que IPB n’est pas un logiciel libre alors que acces_groupes est distribué sous licence GPL (donc « contagieuse »), le plugin ainsi modifié devra être GPL...
Bref, n’étant ni un utilisateur de IPB (et à 69,95$ la licence annuelle je risque pas de le devenir !) ni un fan des solutions propriétaires, non seulement je ne ferais aucun effort pour ce portage mais en plus, si tu souhaitais t’en occuper, ne compte pas sur moi pour une quelconque adaptation du code...
Dans le genre de branchement de ce plugin sur une base utilisateur différente de celle de SPIP, je serais beaucoup plus motivé pour une « connexion » sur les groupes/utilisateurs d’un annuaire LDAP .
Il serait par contre possible d’utiliser le plugin d’authentification des auteurs via une BD externe...
Répondre à ce message
Bonjour
Merci d’avoir mis à dispo votre travail
Débutant , j’essaie de mettre en oeuvre votre contrib qui nous serait bien utile
Nous sommes hébéergés chez « ifrance »
Nous avons installé SPIP 1.9
et votre plugin « acces groupe »
Voici le message qui apparaît :
1064 : 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 ’)’ at line 2 Afficher l’interface textuelle simplifiée
Faut-il adapter des fichiers ?
Merci pour votre réponse
A priori ce plugin n’utilise nulle part de requête SQL en rapport avec « Afficher l’interface textuelle simplifiée » alors cette erreur ne devrait pas être lié à sa présence... Peut être faudrait il passer ton SPIP en version 1.9.1 ?
Bonjour,
J’utilisais la version 0.7 de la contrib « Accès restreint par groupe » sur mon site Spip1.8.2, et ça marchait très bien.
J’ai fait une mise à jour de Spip 1.8.2 vers Spip 1.9.1, en déplaçant au préalable mon ancien site dans un sous répertoire puis j’ai intégré le plugin « Accès restreint par groupe »et j’ai fait la mise à jour des tables de la base de données en utilisant le script ../plugins/acces_groupes/maj_tables.php
Quand je veux créer un groupe, j’obtiens dans la partie haute de mon espace privé le message :
1064 : 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 ’)’ at line 2
Je ne sais pas comment ni où réparer la chose !
Quelqu’un aurait une idée ?
...merci
et le fichier /ecrire/data/mysql.log il te donne quoi comme message d’erreur ?
Bonjour,
merci de venir à mon aide si vite !
Voilà, j’ai tout viré mon site spip 1.8.2 et vidé ma base par PhpMyAdmin, réinstallé spip 1.9.1 et copié/collé mes articles depuis mon site en local vers mon hébergeur (OVH) mais lorsque je tente de créer un groupe d’ accès restreint, Paf ! je retrouve le même message : ’You have an error in your SQL syntax...’
J’ai regardé le fichier ’mysql.log’ et j’ai ça (mais ça ne me parle pas vraiment) :
Répondre à ce message
Bonjour,
après activation du plugin, je n’ai pas les choix de restrictions qui apparaissent au niveau des fiches d’auteur...
c’est dommage car tout marchait bien auparavant sur mon 1.9 et après passage au 1.9.1 c’est la misère...
j’ai essayé également le plugin accès_groupe mais il ne me satisfait pas, et je suis repassé à accès_restreint et depuis, plus rien !!
help ????
oups... je suis pas dans le bon forum là... je pensais au plugin accès_restreint...
pardon....
Répondre à ce message
Je me lance de spip 1.8.3 à 1.9.1 avec ce plugin en boni ! (Je suis toujours avec les squelettes de base)
Il y a un truc que je ne pige pas. Je dois donner des accès à des sous-sous-rubriques (ex : 1.1.5 et 1.1.7) à un utilisateur A, sans autoriser l’accès à la totalité de la rubrique-mère (1.1). J’ai donc donné les autorisations équivalentes dans le gestionnaire d’accès à cet utilisateur A et restreint l’accès à 1.1 en donnant l’accès à cette rubrique qu’à l’admin principal.
Mon problème : Dans une boucle de type plan, comme (1.1) n’est pas accessible à utilisateur A, les (1.1.x) autorisées n’apparaissent pas pour cet utilisateur. Le fil d’ariane saute également cette rubrique lorsque utilisateur A se trouve dans 1.1.7 (Accueil > 1 > 1.1.7)
Comment arriver à afficher la hiérarchie ascendante dans un menu ou un fil d’ariane dans un cas comme celui-ci ? - Merci de vos lumières !
Le problème que tu rencontre est lié au fait que par défaut ce plugin masque toutes les rubriques (et leurs contenus) qui ne sont pas accessibles à l’utilisateur en cours : donc si la rub 1.1 est restreinte à l’admin général seul, personne d’autre que lui ne pourra voir les sous-rubriques 1.1.5 et 1.1.7 dans les menus de rubriques du squelette dist.
Jusqu’à il y a 2 jours je t’aurais répondu : « déplace tes rubriques 1.1.x dans une rubrique parent non-restreinte » et basta !
Mais tu as de la chance : suite à quelques échanges sur l’irc #spip d’autres utilisateurs du plugins m’ont convaincu qu’il devait être possible de pouvoir afficher la liste de toutes les rubriques/sous-rubriques même les restreintes.
Alors si tu attend encore quelques jours (le temps de finaliser), tu pourra mettre à jour ce plugin avec la version 1.0.2 qui implémente le critère tout_voir (comme d’hab’ pompé sur le plugin accès_restreint : merci Cedric !) et le filtre accesgroupes_visualise qui permet d’ajouter une image (par défaut ecrire/img_pack/cadenas-24.gif) devant les #BALISES des rubriques/articles/breves appartenant à une rubrique restreinte. Bref : ça devrait te permettre de faire apparaître les sous-rubriques 1.1.x dans les menus rubriques. Pour le HOWTO des modification de squelettes nécessaires : repasse par ici, cet article expliquera comment faire.
C’est fait : la version stable est désormais la 1.0.2 qui supporte le critère tout_voir et le filtre accesgroupes_visualise pour pouvoir afficher des listes de rubriques (mais aussi articles, brèves...) y compris ceux appartenant à des rubriques restreintes. Voir le point 8. de cet article pour leur intégration dans les squelettes.
bonjour,
Mais où trouver cette version ?
la 1.0.2 étant désormais la version « officielle », il te suffit de (re)télécharger le zip du plugin. Vu que le serveur de la zone a eu un problème hier, utilise le mirroir http://miroirspip.ventre.name/build..., la version qu’il propose est à jour.
merci bien :)
merci t’es un géni ça marche impec !!!
bon j’ai tjrs mon souci pour masquer les rubriques où les auteurs restreints ne devraient pas avoir accès ....
crois tu qu eje devrais modifier le squelette en supprimant dans le formulaire ecrire un nouvel article la liste déroulante ?
Répondre à ce message
Salut,
Bravo, merci, super...
Dans une config « public:ouvert/privé:fermé », j’ai découvert par hasard que l’accès via l’historique des modifications n’est pas filtré. Pas rhédibitoire mais à implémenter peut-être quand même ;-)
Mes deux sous.
Suske
ouais... y’a un trou là : il va falloir s’en occuper !
Merci pour l’info : je poste sur ce billet lorsque le patch sera sorti.
(PS : bonne exemple d’utilisation de ce plugin ton site de blogs...)
c’est corrigé !
sortie de la v 1.0.1 : support de exec=articles_versions pour le filtrage de l’espace privé
cette version constitue la version _stable_ de ce plugin et sera celle proposée au téléchargement sur la zone http://zone.spip.org/files/spip-zon... d’ici 1/2 heure...
Wouaouw ! 10h et 8 minutes après mon message... C’est pas aussi rapide qu’ESJ sur spip-dev mais chapeau bas quand même :-))
Z’êtes tous comme ça les spipiens ?
le plugin n’est pas accessible à cette adresse :
http://zone.spip.org/files/spip-zone/acces_groupes.zip
où se trouve-t-il ?
Répondre à ce message
C’est peut-être plus compliqué...
Comme je viens de faire la bêtise, je détaille auu cas où : j’ai omis (comme souvent) de sélectionner une rubrique avant de poster un nouvel article. Résultat, mon texte est parti dans la rubrique par défaut, celle qui est la première dans la liste et à laquelle je n’ai pas accès...
POour éviter ça, j’ai donc créé une rubrique bidon intitulée « ****** Sélectionnez une rubrique à laquelle vous avez accès ! ****** », qui, grâce aux étoiles, devrait rester la première dans la liste. J’y ai donné accès à tous les rédacteurs. C’est une solution honorable mais pas très structurelle...
vu le fonctionnement actuel du filtrage de l’espace privé, c’est effectivement une erreur possible : un rédacteur peut choisir une rubrique à laquelle il n’a pas accès comme rubrique parent d’un nouvel article... une fois qu’il a fait le premier enregistrement, il ne peut plus l’afficher !
Ta solution est une bonne ruse pour limiter la casse au niveau des oublis... mais c’est un problème qui ne devrait plus exister dans la prochaine version puisqu’avec la squelettisation de l’espace privé (spip 1.9.2 ?) il sera possible d’appliquer la méthode de filtrage des requêtes MySQL donc de masquer les rubriques restreintes dans toutes les pages de l’espace privé.
Donc, une fois de plus, patience...
J’avais pas lu l’article « à fond » et viens de découvrir que ceci y était expliqué... Désolé pour le bruit.
Répondre à ce message
Bravo pour la gestion des accès par groupes !!!
J’ai par contre une petite question : Comment dois-je procéder pour ajouter le login utilisateur au contexte ? Ceci dans le but d’éviter d’avoir une version « cachée » de ma page sommaire (qui n’affiche normalement qu’un message de bienvenue et un lien pour se connecter). Une fois loggué, celle-ci doit afficher un lien déconnecter et les rubriques en accès restreint.
Mon problème, c’est que certaines fois quand je me connecte à mon site, je tombe sur une version cachée d’une session précédente.
Mon FAI est free et j’ai fraîchement installé la version SPIP 1.9.1 ainsi que la dernière version du plugin acces_groupe.
En principe tu ne devrais pas avoir besoin « d’ajouter le login utilisateur au contexte » : le fonctionnement normal de ce plugin est prévu pour gérer le cache en fonction des droits de l’utilisateur connecté ce qui ne devrait pas te permettre de « tomber sur une version cachée »...
Alors plusieurs pistes possibles :
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 :
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.
Suivre les commentaires : |