SPIP - Contrib

SPIP - Contrib

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

49 visiteurs en ce moment

[25 commentaires]

Gestion hiérarchisée des accès restreints

vendredi 5 novembre 2004, par Michael Courcy

Toutes les versions de cet article : [français] [français]

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati

Pouvoir mettre en accès restreint des rubriques et des articles.

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,

Zip - 11.8 ko

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"

P.-S.

Un peu stupidement j’ai oublié id_groupe=20 dans l’appel d’un squelette, en rapport avec une autre contrib donc on s’affolle pas, on l’ignore et ça marche pareil.

Retour en haut de la page

25 Messages de forum

Voir toute la discussion

1 | 2 | 3

  • Répondre à ce message

    15 juillet 15:55

    snif personne pour m’aider ?

  • Répondre à ce message

    15 juillet 12:07 , par ola

    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

  • Répondre à ce message

    31 mai 2006 14:22 , par cc

    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

    26 avril 2006 19:25 , par frohard

    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

    19 octobre 2005 16:08 , par tcheva

    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

    17 octobre 2005 19:20 , par Luj

    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

    7 octobre 2005 10:10

    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

    7 octobre 2005 10:07

    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)

  • Répondre à ce message

    25 juillet 2005 20:48 , par Sir

    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

    4 juillet 2005 15:07 , par dd_a

    Bon, d’accord, c’était une question con. Disons qu’en utilisant un bon éditeur html tout devient plus clair...

1 | 2 | 3

Répondre à cet article

Retour en haut de la page

Ça discute par ici

SPIP | Squelette | | Plan du site | Suivre la vie du site RSS 2.0