Une mise à jour de cet article pour la version 1.8 de SPIP est disponible ici : MAJ 1.8 de l’article « Gestion hiérachisée des accès restreints »
Que permet de faire cette contrib ?
- Choisir quelle(s) partie(s) de votre site public sera en accès restreint.
- Définir les visiteurs qui ont le droit de visiter telle ou telle rubrique et leurs articles associés.
Cette contrib n’utilise que les squelettes et les formulaires de spip, vous n’aurez pas à modifier le noyau, ce qui vous permettra de réactualiser spip sans inquiétude quant au fonctionnement de ce système.
Pourquoi « hiérarchisée » ?
Tout simplement parce que si vous mettez la rubrique « recettes cuisines » en accès restreint, alors ce sont tous ses articles ainsi que toutes ses sous-rubriques avec leurs articles qui sont en accès restreint. Par exemple « plats mijotés » et « entrées chaudes » qui sont des sous-rubriques de « cuisine » seront aussi « par héritage » en accès restreint.
Et si un visiteur se voit octroyé le droit de visiter « cuisine », il pourra visiter également « entrées chaudes » et « plats mijotés ». Mais si il ne lui a été donné que le droit de visiter « plats mijotés », il ne pourra pas accéder à « entrées chaudes » ou à sa rubrique parente « cuisine ».
Installation
Pour travailler sur les mêmes bases je partirai d’une distribution 1.7 toute neuve et je vous demanderai d’en faire autant.
Pour exemple vous pourrez voir ce système en action sur
acces_restreint
Je la laisserai en l’état pour un mois ou deux. Il n’est pas exclu qu’au moment où vous lirez cet article ce lien ne soit plus valide.
Décompressez l’archive zip jointe,
et dans la racine du site installez en écrasant si nécessaire :
- article-dist.html
- rubrique-dist.html
- controle_acces_rubrique.html
- controle_acces_article.html
- controle_acces_rubrique.php3
- controle_acces_article.php3.
Dans « ecrire » installez en écrasant si nécessaire :
- inc_extra.php3
- mes_options.php3.
C’est fini, la gestion des accès restreints est opérationnelle.
On verra plus tard comment l’adapter à vos propres squelettes. Mais pour tester avec les mêmes bases on travaille avec la distrib.
Utilisation
Nous allons commencer par créer la rubrique « cuisine »
puis deux sous-rubriques « entrées chaudes » et « plats mijotés ».
Ignorez pour l’instant la partie située à la fin du formulaire d’édition de la rubrique. Si elle n’y est pas, mettez-la à « accès tout public »
vous devriez obtenir ça :
Puis maintenant créons un article dans chacune des sous-rubriques : moi, j’ai choisi « daube » dans « plats mijotés » et « chèvres chauds sur son lit de cressonnette » dans « entrées chaudes » (c’est pour vous donner envie d’aller au bout de l’article :-) ). Publiez en ligne ces deux articles.
Et maintenant nous allons mettre en accès restreint la rubrique « plats mijotés ». Modifiez la rubrique « plats mijotés » et modifiez sont statut pour « accès restreint », valider, vous devriez obtenir ça :
Puis vous allez visiter le site et cliquer sur la rubrique « plats mijotés »
et là, vous allez avoir une déception car on ne vous a pas barré le passage... :==(
C’est normal, vous êtes encore loggé comme administrateur.
Commencez par vous déconnecter.
et revenez au site public pour réessayer.
Là, vous devriez obtenir ceci :
Revenez au site public sans chercher à vous connecter
et essayez de lire l’article « Daube »...
Même résultat.... Quand on protège une rubrique, on protège aussi les articles qu’elle contient.
Création des visiteurs
Pour les exemples qui vont suivre, on remettra la rubrique « plats mijotés » en accès public, et on mettra la rubrique « cuisine » en accès restreint. On peut constater alors que plus aucun élément du site n’est accessible.
Spip accepte maintenat 4 statuts
- Les administrateurs
- les administrateurs restreints
- les rédacteurs
- Les visiteurs
Ces derniers ne peuvent être créés que si au moins un article dans le site a ses forums réglés en abonnement. Nous allons donc paramétrer l’article « Daube » de cette façon.
Puis nous allons créer un auteur que l’on appellera « bocuse ». Pour nous simplifier la tâche, on lui donnera le même login et le même mot de passe. On n’oubliera pas de régler son statut à « visiteur », on renseignera le champ « liste des rubriques.... » en rentrant « 2 » qui est l’id de la rubrique « plats mijotés ».
Apres vous être déconnectés, essayez de vous placer sur la rubrique « plats mijotés » en entant
pour login « bocuse » et pour mot de passe « bocuse ».
Ca marche !! Et si vous essayez avec cette connection d’aller sur la rubrique « cuisine » ou sur la rubrique « entrées chaudes », on vous annonce que vous n’avez pas les droits suffisants.
On va donc créer le visiteur « superbocuse » de la même manière que le précedent, mais on renseignera le champ
« liste des rub... » à « 1 ». Vous l’avez compris, « superbocuse » aura le droit de visiter tout le site.
Remarque sur les sessions sous spip
Je ne connais pas l’implémentation des sessions sous spip mais il semble qu’après de nombreuses connexions-déconnexions, et changements d’identité, le mécanisme présenté plus haut aie tendance à demander plus qu’il ne le faudrait à l’utilisateur de se réidentifier.... Il vaut mieux que le défaut aille dans ce sens que dans l’autre. Donc ne pas hésiter à réessayer si vous n’arrivez pas à vous connecter la première fois.
Adapter ceci à tous vos squelettes
Dans votre article.html recopiez en début de fichier la même ligne que dans article-dist.html. Faites la même chose avec rubrique.html et rubrique-dist.html.
Quelques explications pour les développeurs
Ce sont les squelettes « controle_acces_rubrique.html » et « controle_acces_article.html » qui contrôlent l’entrée de l’article ou de la rubrique.
Dans les deux cas le principe est simple :
- Une boucle hiérarchie parcourt la liste des rubriques, de la rubrique, ou de l’article en cours, jusqu’à la racine. Si pendant ce parcours, une des rubriques a son extra « acces » égale à « restreint », alors le drapeau « $restriction » passe à « true ».
- Si « $restriction » vaut true alors on vérifie si le visiteur est loggé.
- Si le visiteur est loggé, la fonction « a_le_droit(...) » récupère l’extra associé à cet auteur (grâce à une fonction de beatnick), et vérifie si dans la hiérarchie citée précédemment l’auteur a le droit de visiter une de ces rubriques, si c’est le cas on le laisse lire la rubrique ou l’article.
N’hésitez pas à me faire remonter les bugs, qui seront, j’en suis certain nombreux....
Une mise à jour de cet article pour la version 1.8 de SPIP est disponible ici : MAJ 1.8 de l’article « Gestion hiérachisée des accès restreints »
Discussions par date d’activité
9 discussions
bonjour
je suis en 1.7.2 et l’accès restreint ne s’effectue pas pour la rubrique voulue
à quoi ceci est il dut ?
merci
snif personne pour m’aider ?
Répondre à ce message
J’utilise cet contrib sur notre site intranet et ca marche tres bien.
Seul probleme : Meme si le repertoire /IMG est protege par htaccess il est toujours possible d’acceder aux fichiers (documents) qui se trouvent dans une page avec acces protege. Bien sur il faut connaitre le nom du fichier. Quelqu’un aurait trouve une astuce pour eviter ceci ? Merci !
Répondre à ce message
bonjour,
j’ai mis en œuvre cette option - le résultat est à moitié atteint ;-)
en effet, si mes rubriques contiennent bien la mention acces restreint ou public - il n’ y a pas de statut de visiteur chez les rédacteurs - et donc pas de restriction d’acces - version 1.7.2
que faire ???
J Marc
tiens au fait, si quelqu’un peut me dire quel est le squelette du site usma.fr dont je reprends la gestion ...
merci d’avance
Répondre à ce message
merci ça marche tres bien
mais je veux savoir un truc j’ai met un menu avec les titres des rubriques comme lien et est ce que c’est possible de ne pas afficher les titres du rubriques qui ont un accès restreint
que si la personne s’identifie (aussi afficher pour chaque personne ses propres rubriques)
merci de votre aide
Répondre à ce message
Attention, les articles sont toujours visibles (en résumé) sur certaines pages dont surtout le plan du site.
Il faut donc modifier les boucles pour ne pas afficher les rubriques (et les articles qui sont dessous) :
<?php if ('[(#EXTRA|extra{acces})]'!='restreint') { ?>
Ici les boucles d’affichage autorisées
<? } ?>
Répondre à ce message
Merci pour cette contrib. Je l’ai applique a notre site Intranet.
Le seul probleme a ete le cache. Apres fermer IE vous pouviez toujours avoir acces a la page a nouveau sans taper le login+password.
Il a fallu que je change $delais=0 partout et ca marche !
CC (England)
J’ai oublie de preciser que j’ai fait une copie du programme pour controler les breves egalement. Si vous voulez une copie veuillez svp indiquer votre e-mail.
Répondre à ce message
Bonjour,
Merci pour ce topo adapté à mon niveau débutant (en php). Ca marche nickel sur SPIP 1.8. Je cherche le moyen de l’adapter à la rubrique particulière agenda . Quelqu’un aurait-il une solution à me proposer SVP ?
Merci.
Répondre à ce message
La MAJ pour la 1.8 est ici
Si elle est publiée bien sur.
Merci Michaël pour ces contribs !
- Celle-ci ne semble accessible que sur l’espace privé
- Cette dernière semble fonctionnelle avec les indications suivantes :
Pourquoi laisser tomber les champs extra ?
Bonjour,
Où peut on trouver les MAJ pour la version 1.8 de l’article « Gestion hiérarchisée des accès restreints » ?
Merci par avance
Bonjour,
Fonctionne-t-elle sur le dernier spip 1.8.1 ?
Merci par avance
Bonjour,
Tout d’abord un grand merci pour ce travail. Je débute sous spip en construisant un site avec spip 1,8,1, ta contrib et bones 1,8 comme squelette. J’ai pu faire fonctionner le controle des accès mais depuis la mise à jour de bones il y a 2 jours j’ai dû écraser quelque chose et je ne trouve plus quoi. Pourrais-tu indiquer comment adapter ta contrib aux autres squelettes, puisque les fichiers « *-dist.html » que tu mentionnes ont disparu (en précisant si possible quelle est cette ligne qu’il faut ajouter à nos fichiers). Désolé si mes questions paraissent lourdingues ou si elles n’ont pas lieu d’être !
Bon, d’accord, c’était une question con. Disons qu’en utilisant un bon éditeur html tout devient plus clair...
Répondre à ce message
Cette contribution marche très bien avec la version 1.7.2.
Pourquoi l’avoir refusé ?
Même si elle n’est pas compatible avec la 1.7 voire la 1.8 elle mériterait d’être intégrée dans SPIP moyennant les améliorations/modifications necessaires.
Tout simplement parce qu’elle utilise (fort bien) les champs extra, qui on été introduits dans SPIP 1.7.1 (je crois) et qui ne sont pas destinés à ’survivre’ en l’état à SPIP 1.8. Donc dans quelques mois, elle posera plus de problème qu’elle n’en résoudra.
Absolument d’accord, c’est aussi pour cela que j’ai renoncé à l’entretien de cette contrib quoiqu’elle me rende encore quelques services....
J’ai beaucoup plus confiance (avec l’arrivée de la 1.8) en la possibilités de définir dans le langage des boucles lui-même la notion de session qu’à le bricoler comme je l’ai fait.
Quand la 1.8 sortira officiellement je proposerai coup sur coup deux contributions (enfin j’espère y arriver). Une contribution qui permet d’ajouter un mot clé à un auteur et une contribution sur les sessions, c’est la combinaisons de ces deux outils qui permettront de définir des règles de navigations adaptés a l’auteur de la session.
Merci encore pour cette magnifique contrib qui m’a permis à la fois :
- de mieux comprendre le fonctionnement des extra
- de me permettre d’imaginer enrichir assez facilement le fonctionnement de base de SPIP
- et de gérer des accès restreints assez facilement !
Je suis passé à la 1.8b6 en particulier pour sa fonction d’enregistrement de l’historique de modification des articles - ce qui au passage offre la richesse de faciliter le travail à plusieurs sur un article - et je voudrais, malgré les réserves énoncés quant au fonctionnement de cette contrib pour la 1.8, signaler un bug :
- cette contrib semble toujours fonctionner, à l’exception des Champs de saisie type Bouton radio ou Liste select.
Merci d’avance pour l’adaptation de cette contrib à la 1.8 !!!
Cette contrib ne sera adaptée à la 1.8 qu’à la sortie officielle de celle-ci.
Cordialement.
Hello !
Tu penses qu’ils serait possible pour la futur adaptation à la 1.8 de pouvoir aussi restreindre l’accès à certains rédacteurs à certaines rubriques dans l’espace privé ?
J’ai des rédacteurs qui ne devraient pas avoir accès à certains documents (documents confidenciels) qui, même avec ta contrib, pouraient passer par l’espace privé pour y accéder.
Merci
Vincos
> Non car c’est une modification du noyau.
Ca entrainerait un refus automatique de la contrib, et c’est contraire aux principe de transparence dans ce cms.
Une idée du délai pour cette adaptation ?
Je ne suis pas très doué en php, mais je me propose d’aider à bêta-tester en cas de besoin ;)
SPIP 1.8 est sorti. Quoi de neuf pour cette contrib, qui m’a l’air de correspondre tout à fait à ce que je recherche ? Ca marche avec la 1.8 ?
Merci !
Tout d’abord bravo aux contributeurs, particulièrement toi Courcy.
Dommage, je cherche depuis longtemps cette contribe, mais qui soit également adaptée au site privé !
Je crois ne pas être le seul !
Merci pour ton travail.
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 : |