SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Auteurs et Authentification > Restriction de l’accés aux contenus > Accès restreint V1

Le plugin Accès Restreint

vendredi 29 septembre 2006, par achille, Alexandra, BoOz, Cedric Morin, Joseph, RealET. Dernier ajout jeudi 8 novembre 2007


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.


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 :

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.

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 :

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 :

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']....

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.

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

- inc_identification_sedeconecter.html

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

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

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 :

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

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 :

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 :

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.

Notes

[1] Imaginons 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.

[2] Cela 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

[3] L’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

Sans Focus


Répondre à cet article

  • Chantier Accès Restreint

    19 décembre 2007 16:15, par Joseph

    Un début de synthèse sur le chantier de l’évolution de Accès Restreint a été proposé ici : http://www.spip-contrib.net/Chantie....

    N’hésitez pas à compléter ce document.

    Répondre à ce message

    Retour au début des forums

  • Problème avec fichier

    16 décembre 2007 07:29, par saintvinasse2

    Bonjour et merci pour ce plugin !

    J’ai un fichier dans un article dans une rubrique d’accès restreint.

    Lorsqu’on clique sur le lien en étant connecté, c’est bien normal, on télécharge le fichier.

    Mais lorsqu’on copie l’adresse du lien et que quelqu’un l’entre dans son navigateur, c’est moins normal, on télécharge encore le fichier.

    Lorsque c’est sur un navigateur qui n’a pas mis en cache le fichier, l’adresse se transforme en un /img/PDF/le fichier.

    Je bloque par .htaccess (et si tu as une idée du comment, je suis preneur) ou il y a un moyen d’empêcher ça avec ton plugin ?

    Merci beaucoup,

    Ed

    Répondre à ce message

    Retour au début des forums

  • Le plugin Accès Restreint

    15 décembre 2007 18:02, par dnow

    Bonjour, J’ai installé ce plugin sous SPIP 1.9.2a [8878] Squelette BeeSpip v.1.9.1 [282] je voudrai que les profs (c’est un site d’établissement hébergé sur un serveur académique) n’accédent dans la partie privée qu’aux rubriques et sous rubriqes "disciplines" seulement ça marche pas. Des restrictions pour la partie publique fonctionne mais pas les restrictions dans la partie privée. En fait les admin. restreint ont accès à toutes les rubriques du site (pas normal). Que faire Merci http://www.ac-grenoble.fr/lycee/cor...

    Répondre à ce message

    • Le plugin Accès Restreint 16 décembre 2007 00:55, par denisb

      un peu vague le descriptif...

      Des restrictions pour la partie publique fonctionne mais pas les restrictions dans la partie privée

      sur les mêmes rubriques et pour les mêmes auteurs ? rédacteurs ? administrateurs restreints (au sens spip) ?

      peut-être un problème de structure des zones privées (voir mon post du 6 décembre 2007 02:47 - n° 400904), ou d’affectation des auteurs aux zones privées,... bref plein de possibilités.

      il faudrait être un peu plus disert (pour le coup).

      Répondre à ce message

      • Le plugin Accès Restreint 16 décembre 2007 12:07, par dnow

        Rectification et compléments

        Le plugin ne fonctionne pas (pour la partie publique et privée) : j’explique : je voudrais que les profs puissent accéder dans la partie privé qu’à la rubrique "disciplines" .Avant la mise en place du plugin ils étaient administrateurs (au sens de spip) du site. Je lance le plugin ; je crée une "zone profs" je coche "Restreindre l’accès à cette zone dans l’espace privé" ; je coche "disciplines" ; je valide. Je vais dans "auteur" et pour chaque prof je les affecte à la "zone profs". Je vide la cache. Je me logue sous le login d’un prof concerné et là.....rien. J’ai accés à toutes les rubriques ; je peux écrire les articles où je veux ; je peux tous mettre à la poubelle etc...

        Pourquoi cela ne marche pas (un conflit avec un autre plugin ? ; restriction particulier du serveur académique ?)

        Merci

        Répondre à ce message

        • Le plugin Accès Restreint 16 décembre 2007 16:26, par denisb

          ah ben non ! ça marche pas comme ça : les rubriques publiques restent publiques (dans le site public comme dans l’espace privé).

          - si tu veux que tes profs n’aient accès, dans l’espace privé de spip, qu’à leur rubrique de discipline, il te faut créer une zone privée par discipline et affecter à chacune de ces zones l’auteur/professeur concerné :

           
          ! rubrique         ! zone      ! auteur   !
          -------------------+-----------+----------+
          ! 01. disciplines  !           !          !
          !   0101. lv1      ! profs_lv1 ! castor   !
          !   0102. lv2      ! profs_lv2 ! pollux   !
          !   0103. maths    ! profs_mat ! cassiope !
          !   0104. hist_geo ! profs_h_g ! vega     !
           

          la rubrique disciplines est publique (non restreinte) ; elle peut ne pas exister et ses sous-rubriques être remontées d’un niveau.

          - si tu veux, en plus, que tes profs ne puissent publier que dans leur discipline (et pas dans d’autres rubriques publiques du site -ils ne devraient normalement pas pouvoir accèder aux autres rubriques restreintes), il te faut les définir comme administrateur restreint à leur rubrique au sens spip, (comme ils l’étaient avant si j’ai bien compris).

          Répondre à ce message

          • Le plugin Accès Restreint 16 décembre 2007 17:48, par dnow

            Merci pour les réponses rapides et précises mais j’ai un autre problème qui apparait (pas lié au plugin) mais j’ose abuser car tu m’en parle : quand je crée un administrateur restreint au sens de spip j’ai l’erreur "HTTP 302 Si votre navigateur n’est pas redirigé, cliquez ici pour continuer". qui apparait (dans la partie privé) et l’administrateur restreint n’a pas accès à sa rubrique. Que faire ?

            Merci encore

            Répondre à ce message

            • Le plugin Accès Restreint - http 302 16 décembre 2007 23:59, par denisb

              aaaarrrrrrghh la redirection http:302 !!!

              enfer, damned et gaspaciòn

              ça ne relève plus du plugin ça.

              bon.

              comme les retours d’en-tête du serveur www.ac-grenoble.fr indiquent qu’il tourne sous apache (c’est déjà ça), peut-être (je dis bien peut-être) tu peux essayer la manip de jacques73 (voir trac-spip) ; à savoir dans ecrire/inc/headers.php, commenter les lignes comme suit :

              - avant :

               ...
               if ($x = _request('transformer_xml'))
                 $url = parametre_url($url, 'transformer_xml', $x, '&');
               // Il n'y a que sous Apache que setcookie puis redirection fonctionne
               
               if (!$equiv OR ereg("^Apache", $GLOBALS['SERVER_SOFTWARE'])) {
                 @header("Location: " . $url);
               } else {
                 @header("Refresh: 0; url=" . $url);
                 $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
               }
               include_spip('inc/lang');
               ...
               

              - après :

               ...
               if ($x = _request('transformer_xml'))
                 $url = parametre_url($url, 'transformer_xml', $x, '&');
               // Il n'y a que sous Apache que setcookie puis redirection fonctionne
               
              //-----  modifications car redirection http 302 malvenue
              //  if (!$equiv OR ereg("^Apache", $GLOBALS['SERVER_SOFTWARE'])) {
                 @header("Location: " . $url);
              //  } else {
              //    @header("Refresh: 0; url=" . $url);
              //    $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
              //  }
              //-----  fin modifications
               include_spip('inc/lang');
               ...
               

              reviens nous dire si ça s’arrange...

              Répondre à ce message

              • Le plugin Accès Restreint - http 302 17 décembre 2007 11:22, par dnow

                Et bien.... NON. Ca ne fonctionne pas mais j’ai quand même reussi à créer mes administrateurs restreints (au sens de spip). Le truc c’est dans le dossier /tmp/upload qui était en chmod 777 je l’ai supprimé puis recréé (en 777) et cela fonctionne (plus de redirection http 302) Logique non ?

                Merci encore pour toutes les indications et pour la disponibilité

                Répondre à ce message

    Retour au début des forums

  • Le plugin Accès Restreint

    12 décembre 2007 16:53, par yanik

    Ne fonctionne pas avec le squelette SpipClear. Après activation du plugin : page blanche coté privé comme public.

    Répondre à ce message

    Retour au début des forums

  • Vous n’avez pas accès à cette page.

    8 décembre 2007 07:49, par Kern-83

    Profitant du passage sur un autre serveur, je viens d’installer la version 1.9.2c de Spip Tout c’est bien passé et mon site refonctionne parfaitement sous sa nouvelle identité. J’ai pu facilement récupérer la base de données, ...

    Malheureusement, en réinstallant le plugin accès restreint, lorsque je veux créer les zones à protéger, j’obtiens systématiquement le message : Vous n’avez pas accès à cette page.

    Que faire ?

    Car je m’étais vraiment bien habitué à la facilité apportée par ce plugin et là je ne saurais plus m’en passer !!!!

    Répondre à ce message

    • Vous n’avez pas accès à cette page. 9 décembre 2007 20:52, par denisb

      quand tu as réimporté ta base, je parie que les id ont changé (comme ils sont basés sur un auto_increment, ils repartent de zéro). manifestement, les correspondances id_auteur/id_zone ne sont donc plus valables.

      le plus simple, sous phpMyAdmin, vide les 2 tables d’accès restreint :
      - spip_zones_auteurs à cause de cette histoire de correspondance ;
      - spip_zones_rubriques) parce qu’il y a de grandes chances (?) que les id de rubriques aient aussi été changés et que donc tes zones ne regroupent plus les mêmes rubriques.

      Répondre à ce message

      • Vous n’avez pas accès à cette page. 10 décembre 2007 02:22, par Kern-83

        J’ai essayé, après vérification des id qui étaient restées les mêmes, rien à faire. J’ai supprimé le plugin, puis réinstallé en partant de zéro, et je ne parviens toujours pas à créer fut-ce une première zone protégée. Au moment où je clique sur "enregistrer" il m’affiche ce même msg. ?!?!?!

        Seule différence peut-être, l’ancien site, donc celui transféré sur le nouveau serveur, avait été créé sous un autre login, que je n’utilise plus. Mais pour Spip cela ne semble poser aucun problème, les 2 logins étant "admistrateur" plein pouvoirs.

        Donc le prob vient logiquement d’ailleurs.

        Une autre petite suggestion ?

        A+

         

        Répondre à ce message

        • Vous n’avez pas accès à cette page. 10 décembre 2007 08:41, par denisb

          ah !

          tu es sous quelle version de spip et sous quelle version du plugin (numéro svn) ? est-ce le même couple de versions (spip/plugin) que sur l’ancien site ?

          apparement c’est la fonction autoriser() qui ne te reconnait pas les droits nécessaires... mais si tu as accès aux boutons de configuration, c’est qu’elle te les accorde...

          tu es bien dans la page (barre d’adresse) http://ton-site.com/ecrire/?exec=acces_restreint_edit&new=oui en tant, donc, qu’administrateur total du site ?

          Répondre à ce message

          • Vous n’avez pas accès à cette page. 10 décembre 2007 10:46

            J’ai rencontré le même problème il y a quelques jours.

            Je ne sais pas si j’ai bien fait, mais j’ai mis des autorisations en 777 sur les propriétés des fichiers par FTP. Du coup ça fonctionne. Coup de chance ? Je ne sais pas...

            Qu’en pensez vous ?

            Répondre à ce message

          • Vous n’avez pas accès à cette page. 10 décembre 2007 12:30, par Kern-83

            Pour le nouveau site, c’est Spip 1.9.2.c et pour le plugin il me donne Version : 0.2 | stable Répertoire : acces_restreint_1_9

            Pour l’ancien, c’était Spip 1.9.2.a et c’est le même plugin Version : 0.2 | stable Répertoire : acces_restreint_1_9

            et c’est bien la page /ecrire/?exec=acces_restreint_edit&new=oui pour laquelle je suis administrateur total

            Pour plus de certitudes, dans l’enregistrement du compte administrateur, j’ai tenté de modifier en cochant la case du bas "Ajouter toutes les zones", mais rien n’y fait.

            C’est plus fort que du Roquefort ....

            Répondre à ce message

            • Vous n’avez pas accès à cette page. 10 décembre 2007 14:59, par denisb

              houla... j’ai du mal à te suivre...

              - quand tu cliques sur le petit cadenas (le bouton à droite du bouton des plugins) dans le menu configuration, ça t’envoi sur la page ecrire/?exec=acces_restreint

              sur cette page as-tu un tableau listant toutes les Zones d’accès restreint ? ou bien n’arrive-tu même pas à afficher cette page ?

              - quand tu cliques sur le bouton de menu auteur pour accèder à la page ecrire/?exec=auteurs puis que tu cliques sur ton nom pour accèder, donc à ecrire/?exec=auteur_infos&id_auteur=xx as-tu la liste des zones restreintes qui te sont (seraient) accessibles ?

              - quand tu dis

              dans l’enregistrement du compte administrateur, j’ai tenté de modifier en cochant la case du bas « Ajouter toutes les zones »

              ça veut dire que tu as installé le plugin en tant qu’administrateur X et que tu y accèdes en tant qu’administrateur Y ?

              Répondre à ce message

              • Vous n’avez pas accès à cette page. 10 décembre 2007 15:36, par Kern-83

                Ok, on va essayer d’y voir plus clair...

                - Tout d’abord, saches que puisque cela ne fonctionnait plus sur le nouveau site, j’ai retiré le répertoire des plugins (je n’employais plus les autres -style thickbox) et j’ai purement et simplement remis un nouveau répertoire plugin, dans lequel j’ai rechargé acces_restreint uniquement.

                - Je l’ai donc bien retrouvé dans le le menu configuration où je l’ai consciensieusement coché, et le cadema est apparu correctement.

                - Donc en cliquant sur ce dernier j’arrive sur la page "Zones d’acces restreint", mais vide de tout bien sûr (rien dans le cadre "toutes les zones"). De même, dans menu auteur il n’y a aucune zone restreinte.

                - En cliquant sur "créer une nouvelle zone" j’ai la page en question qui s’ouvre. Mais c’est là que se pose le problème, quoi que je fasse il me refuse la création d’une zone, avec en retour le fameux msg en question.

                - Il y a 3 administrateurs, sans restriction, pour le site. Mais actuellement je suis le seul à y travailler. (J’ai eu beau essayer avec les autres logins, ca ne marche pas mieux).

                [Une petite remarque qui peut donner du grain à moudre :
                - le cookie de spip qui permet d’afficher en haut de l’écran les deux cases "espace privé" et "recalculer cette page" ont également un disfonctionnement. A savoir, "espace privé" n’est plus réactif et il me faut passer par le menu du bas de page où la "espace privé" fonctionne parfaitement. Je n’ai pas compris non plus la raison.]

                Veux tu que je t’envoie sur ton mail un login et un accès à l’espace privé du site ( et pourquoi pas un accès ftp au serveur - je suis hébergé sur free pour le moment mais précisement ceci était une répétition général de transfert du site avant de le mettre sur ma dedibox, une fois qu’il sera terminé, ce qui sera certainement un peu plus chaud) pour vérifier directement par toi-même, moi cela ne me dérange pas et une fois le problème résolu je le retire. En attendant je t’envoie l’adresse du site par mail puisque la protection ne fonctionne pas encore.

                A++

                Répondre à ce message

                • Vous n’avez pas accès à cette page. 11 décembre 2007 02:17, par denisb

                  j’ai beau triturer mon spip et mon plugin dans tous les sens, je n’arrive pas à reproduire ce que j’ai vu sur ton site (mais je ne suis pas hébergé chez free).

                  il n’y a que 2 appels pour l’affichage de ce message : directement lors du chargement de ecrire/?exec=acces_restreint ; là, manifestement, ça passe, et lors du traitement du formulaire de ecrire/?exec=acces_restreint_edit&new=oui ; c’est ici que ça coince apparement...

                  on va mettre les mains dans la graisse :
                  - commence par vider tes trois tables spip_zones... sous phpmyadmin (comme tu désepères de les remplir, elles ne doivent pas contenir grand chose...) ;
                  - dans le script exec/acces_restreint_edit.php ajoute la ligne var_dump(autoriser('modifier','zone'));var_dump($row);var_dump($new); juste au-dessus de if (!autoriser('modifier','zone') OR (!$row && $new!='oui')) { pour avoir :

                  var_dump(autoriser('modifier','zone'));var_dump($row);var_dump($new);
                  if (!autoriser('modifier','zone') OR (!$row && $new!='oui')) {
                   echo _T('avis_non_acces_page');
                   fin_page();
                   exit;
                  }

                  - dans le script exec/acces_restreint.php ajoute la ligne var_dump(autoriser('modifier','zone')); juste au-dessous de debut_droite(); pour avoir :

                  debut_droite();
                  var_dump(autoriser('modifier','zone'));
                  if (!autoriser('modifier','zone')) {
                   echo _T('avis_non_acces_page');
                   fin_page();
                   exit;
                  }

                  - télécharge ces deux fichiers modifiés en remplacement des deux qui sont sur ton site (attention : dans le répertoire exec/)

                  - maintenant tu vas dans la page ecrire/?exec=acces_restreint

                  tu devrais avoir :

                   bool(true)

                  juste au-dessus du cadre du milieu "Toutes les zones d’accès".
                  - clique à gauche sur "Créer une nouvelle zone" pour arriver à ecrire/?exec=acces_restreint_edit&new=oui

                  tu devrais avoir :

                   bool(true)
                   bool(false)
                   string(3) 'oui'

                  juste au-dessus du cadre du milieu " Zones d’accès restreint".
                  - clique sur le bouton "enregistrer" pour arriver à ecrire/?exec=acces_restreint_edit&new=zone_cree

                  tu devrais avoir :

                   bool(true)
                   array(6) { ['id_zone']    =>  string(1)  '1'
                              ['titre']      =>  string(5)  'Titre'
                              ['descriptif'] =>  string(10) 'Descriptif'
                              ['publique']   =>  string(3)  'oui'
                              ['privee']     =>  string(3)  'non'
                              ["maj"]        =>  string(14) '20071211014517'
                            }
                   string(9) 'zone_cree'

                  juste au-dessus du cadre du milieu " Zones d’accès restreint".

                  mais manifestement l’une de ses trois étapes ne se passera pas comme prévu...

                  Répondre à ce message

                  • Vous n’avez pas accès à cette page. 11 décembre 2007 12:16, par Kern-83

                    J’ai une différence à l’avant dernier paragraphe

                    bool(true) NULL string(3) "oui"

                    et bien sûr au dernier

                    bool(true) NULL string(9) "zone_cree" Vous n’avez pas accès à cette page.

                    Comme tu le prédisais, reste un kwak.

                    Pour info, et je crois que c’est important :
                    - Dans la base, je n’ai aucune table spip_zone !

                    Je te rappeles (si jamais ca pouvais t’éclairer quelque part...) que c’est la version Spip 1.9.2c, or il parait que par rapport à la version précédente ce genre de problème a déjà été rencontré par d’autres, dans d’autres plugins, lors de l’upgrading.

                    Ne devrais pas essayer de copier les trois table spip_zone manuellement depuis l’ancien site, ce que spip risque de ne pas aimer...

                    Car c’est peut-être un problème qui se situe au niveau de la nouvelle version de spip, et si c’est le cas, il va me jeter si j’essaye de toucher à la bdd

                    a++

                    Répondre à ce message

                    • Vous n’avez pas accès à cette page. 11 décembre 2007 12:56, par denisb

                      Dans la base, je n’ai aucune table spip_zone !

                      arghhhh !!! c’est maintenant que tu le dis (mais bon, on t’avait rien demandé...).

                      bon. pas problème, tout bien aller, réparé bientôt.

                      allez zou : sous phpmyadmin tu lances la requête :

                      CREATE TABLE `spip_zones` (
                       `id_zone` bigint(21) NOT NULL auto_increment,
                       `titre` varchar(255) NOT NULL default '',
                       `descriptif` text NOT NULL,
                       `publique` enum('non','oui') NOT NULL default 'oui',
                       `privee` enum('non','oui') NOT NULL default 'non',
                       `maj` timestamp(14) NOT NULL,
                       PRIMARY KEY  (`id_zone`)
                      ) TYPE=MyISAM;

                      pas de soucis à attendre de la réaction de spip.

                      après ça, recommence la phase de test avec les var_dump et reviens nous dire ce qu’il en est (mais bon, je pense que ça devrait le faire).

                      Répondre à ce message

                      • Vous n’avez pas accès à cette page. 11 décembre 2007 14:31, par Kern-83

                        En un mot :

                        Deuxpeccable

                        Merci beaucoup, ca marche nickel.

                        Il ne me reste plus qu’à enlever le var_dump(autoriser(’modifier’,’zone’)) ;var_dump($row) ;var_dump($new) ; et je serai un homme heureux

                        Sympa de ta part du soin que t’as mis à m’aider.

                        Bonne continuation

                        Répondre à ce message

                        • Vous n’avez pas accès à cette page. 11 décembre 2007 14:59, par Kern-83

                          J’ai crié victoire trop vite !

                          En effet il a bien créé la table Spip_zones, mais lorsque je veux sélectionner les rubriques à couvrir par une zone, il ne l’enregistre pas, et donc cette zone n’est pas reprise dans mon compte administrateur et il n’est pas possible de l’attribuer aux autres visiteurs ou auteurs !

                          Mais je peux te dire de suite ce qui ne va pas !

                          Je n’ai qu’une table spip_zones : spip_zones_auteurs et spip_zones_rubriques n’existant pas, cela ne peut pas marcher..., si je comprends bien

                          Peux tu me passer le script des deux requêtes, mes connaissances personnelles sur le sujet étant vraiment trop vieilles (il y a plus de 6 ans que je n’avais plus touché à cela)

                          Merci d’avance

                          Répondre à ce message

                          • Vous n’avez pas accès à cette page. 11 décembre 2007 15:07, par denisb
                             
                            CREATE TABLE `spip_zones_auteurs` (
                             `id_zone` bigint(21) NOT NULL default '0',
                             `id_auteur` bigint(21) NOT NULL default '0',
                             PRIMARY KEY  (`id_zone`,`id_auteur`),
                             KEY `id_auteur` (`id_auteur`)
                            ) TYPE=MyISAM;
                             
                             
                            CREATE TABLE `spip_zones_rubriques` (
                             `id_zone` bigint(21) NOT NULL default '0',
                             `id_rubrique` bigint(21) NOT NULL default '0',
                             PRIMARY KEY  (`id_zone`,`id_rubrique`),
                             KEY `id_rubrique` (`id_rubrique`)
                            ) TYPE=MyISAM;
                             

                            et oualou. (s’kon rigole sur ce foroum...)

                            Répondre à ce message

                            • Vous n’avez pas accès à cette page. 11 décembre 2007 16:15, par Kern-83

                              J’étais sur le point de dire cette fois ca y est troispeccable, les trois tables fonctionnent.

                              Malheureusement ce ne sera que deuxpeccable et demi car, une fois que j’ai créé mes zones, lorsque dans la fiche des visiteurs/ auteurs je veux ouvrir le volet des zones attribuées, il ne me donnent que l’option ajouter toutes les zones.

                              Si après je ne veux attribuer que certaines zones, le déroulant ne s’affiche plus et je ne peux donc choisir...

                              C’est pas vraiment grave, car en attribuant toutes les zones je peux toujours en supprimer certaines ensuite, mais c’est un peu lourd ?!?

                              Y a-t-il une solution simple pour remédier à ce problème d’affichage ???

                              Répondre à ce message

                              • select déroulant dans choix des zones 11 décembre 2007 21:33, par denisb

                                bah une solution pas trop compliquée :

                                aux alentours de la ligne 298 de inc/acces_restreint_gestion.php, faire en sorte que la création du tableau des zones soit possible en transformant

                                $les_zones[] = $id_zone;

                                en

                                $les_zones[] = $row['id_zone'];
                                 

                                - avant la modif (ça marche pô) :

                                 
                                 if($flag_editable && ($connect_toutes_rubriques || (AccesRestreint_test_appartenance_zone_auteur($id_zone, $connect_id_auteur) && autoriser('modifier', 'auteur', $id_auteur ) && $id_connect_auteur!=$id_auteur))){
                                   $editable = true;
                                 }
                                 $les_zones[] = $id_zone;
                                }
                                include_spip('public/assembler');
                                 
                                 

                                - après la modif (ha que ça roule) :

                                 
                                 if($flag_editable && ($connect_toutes_rubriques || (AccesRestreint_test_appartenance_zone_auteur($id_zone, $connect_id_auteur) && autoriser('modifier', 'auteur', $id_auteur ) && $id_connect_auteur!=$id_auteur))){
                                   $editable = true;
                                 }
                                 $les_zones[] = $row['id_zone'];
                                }
                                include_spip('public/assembler');
                                 

                                ... puis comme ça, ça miaulera moins dans les logs de tmp/mysql.log .

                                Répondre à ce message

    Retour au début des forums

  • double slash dans chemin des images

    11 décembre 2007 08:36, par denisb

    - dans ecrire/inc/plugin.php spip définit la constante define('_DIR_PLUGIN_$prefix',_DIR_PLUGINS.'$plug/'), ce qui donne un truc du genre : ../plugins/acces_restreint_1_9/. noter l’antislash final.

    - dans acces_restreint_pipelines.php le plugin définit (au cas où elle ne le soit déjà - spip < 1.9.2) la constante define('_DIR_PLUGIN_ACCESRESTREINT',(_DIR_PLUGINS.end($p))), ce qui donne aussi un truc du genre : ../plugins/acces_restreint_1_9/. noter ici aussi l’antislash final.

    - mais dans tous les script du plugin, c’est _DIR_PLUGIN_ACCESRESTREINT . "/img_pack/..." qui est utilisé.

    d’où un double slash dans le code html : ../plugins/acces_restreint_1_9//img_pack/... , double slash mal venu et problématique pour certaines versions de IE.

    donc :

    dans tous les script du plugin, virer ce slash en trop (petit jeu : il y en a 11 à enlever...)

    Répondre à ce message

    • double slash dans chemin des images 11 décembre 2007 12:27, par Kern-83

      Accessoirement à ce qui précède, j’en ai profité pour faire les modifs "img_pack".

      Malheureusement, si j’utilise IE, le résultat est pareil. Il n’y a plus qu’une slash, mais les icônes ne s’affichent toujours pas...

      Décidement je préfère Firefox...

      Répondre à ce message

      • double slash dans chemin des images 11 décembre 2007 13:55, par denisb

        sous IE tu as les liens de la forme

        <img src='../plugins/acces_restreint_1_9/img_pack/wrapper.php?file=zones-acces-24.gif'
        alt=""  />

        pour améliorer l’affichage sous IE (justement)

        mais que fait donc ce if (!defined("_ECRIRE_INC_VERSION")) return; en tête de img_pack/wrapper.php ???

        on a rien à cacher nouzôtres

        allez hop, on vire c’te ligne et... tout baigne !

        Répondre à ce message

    Retour au début des forums

0 | 25 | 50 | 75 | 100 | 125 | 150 | 175 | 200 |...



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et fonctionnement SPIP-Contrib | SPIP | L'autre.net