Comment restreindre l’accès d’un article ou d’une rubrique dans l’interface publique par le statut.

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Cette contrib vous permet de limiter la visibilité de plusieurs pages de votre site aux seules personnes identifiées, que ce soit par leur statut
-  de visiteur
-  de rédacteur
-  d’administrateur.

Si un internaute accède à une page publique protégée, il sera invité à s’identifier par son login et son mot de passe. Une fois fait, s’il a le statut minimum requis, il accèdera directement à la page demandée.

Modifications requises

Les modifications requises sont mineures et peuvent facilement être appliquées à votre site.

Elles sont sans danger et peuvent tout aussi facilement être supprimées en tout temps.

Procédures


-  Assurez-vous que vous n’avez pas déjà des fichiers portant les noms :

  • rubrique_statut.html
  • article_statut.html
  • login_public.php3
  • login_public.html
  • rubrique_ok.php3
  • article_ok.php3

-  Téléchargez, décompressez et déposez à la racine de votre site les fichiers qui sont contenus dans ce document.

Réserver

-  Modifiez le fichier rubrique.php3 :
Changez la valeur de $fond :

//$fond = "rubrique";
$fond = "rubrique_statut";

-  Modifiez le fichier article.php3 :
Changez la valeur de $fond :

//$fond = "article";
$fond = "article_statut";

-  Créez un nouveau groupe de mots-clé appelé Accessibilité
-  À la question Les mots-clés de ce groupe peuvent être associés, cochez pour cet exercice aux rubriques
 [1]

-  Créez dans ce groupe les mots-clés les mots :

  • Administrateur
  • Rédacteur
  • Visiteur

Utilisation

Ajoutez le mot clé Administrateur, Rédacteur ou Visiteur pour limiter l’accès public d’une rubrique ou d’un article.

Explication

Prenons par exemple le cas d’une rubrique réservée :
le fichier rubrique.php3 n’appellera plus directement comme squelette le fichier rubrique.html mais plutôt le squelette contenu dans le fichier rubrique_statut.html.

Ce squelette n’affiche rien, il permet simplement de vérifier si la rubrique est limitée en accès public. Et si oui, de vérifier si l’internaute s’est identifié par son login et son mot de passe. Après, il vérifie s’il a le statut minimum requis. [2]

Une fois cette vérification faite, on affichera la rubrique telle que prévue par votre squelette rubrique.html

Les seuls fichiers vraiment nouveaux sont rubrique_statut.html :

<BOUCLE_accessibilite(MOTS){id_rubrique}{type=Accessibilité}>
		<BOUCLE_a(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Administrateur}>
			<?
			if ($auteur_session['statut']!='0minirezo'){
			?>
			<INCLURE(login_public.php3){id_rubrique}>
			<?
			}
			else {
			?>
			<INCLURE(rubrique_ok.php3){id_rubrique}>
			<?
			}
			?>
		</BOUCLE_a>
		<BOUCLE_b(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Rédacteur}>
			<?
			if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
			?>
			<INCLURE(login_public.php3){id_rubrique}>
			<?
			}
			else {
			?>
			<INCLURE(rubrique_ok.php3){id_rubrique}>
			<?
			}
			?>
		</BOUCLE_b>
		<BOUCLE_c(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Visiteur}{lang_select=non}>
			<?
			if ($auteur_session['statut']!='6forum'&&$auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
			?>
			<INCLURE(login_public.php3){id_rubrique}>
			<?
			}
			else {
			?>
			<INCLURE(rubrique_ok.php3){id_rubrique}>
			<?
			}
			?>
		</BOUCLE_c>
	</BOUCLE_accessibilite>
<INCLURE(rubrique_ok.php3){id_rubrique}>
<//B_accessibilite>

et

article_statut.html :

<BOUCLE_accessibilite(MOTS){id_article}{type=Accessibilité}>
		<BOUCLE_a(ARTICLES){id_article}{id_mot}{titre_mot=Administrateur}>
			<?
			if ($auteur_session['statut']!='0minirezo'){
			?>
			<INCLURE(login_public.php3){id_article}>
			<?
			}
			else {
			?>
			<INCLURE(article_ok.php3){id_article}>
			<?
			}
			?>
		</BOUCLE_a>
		<BOUCLE_b(ARTICLES){id_article}{id_mot}{titre_mot=Rédacteur}>
			<?
			if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
			?>
			<INCLURE(login_public.php3){id_article}>
			<?
			}
			else {
			?>
			<INCLURE(article_ok.php3){id_article}>
			<?
			}
			?>
		</BOUCLE_b>
		<BOUCLE_c(ARTICLES){id_article}{id_mot}{titre_mot=Visiteur}{lang_select=non}>
			<?
			if ($auteur_session['statut']!='6forum'&&$auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
			?>
			<INCLURE(login_public.php3){id_article}>
			<?
			}
			else {
			?>
			<INCLURE(article_ok.php3){id_article}>
			<?
			}
			?>
		</BOUCLE_c>
	</BOUCLE_accessibilite>
<INCLURE(article_ok.php3){id_article}>
<//B_accessibilite>

Pour simplifier cette contrib, le fichier login_public.html est simplement le fichier login.html standard de SPIP où on a remplacé le formulaire privé (#LOGIN_PRIVE) en formulaire public (#LOGIN_PUBLIC). À la différence qu’une fois identifié, l’internaute ayant le statut minimum requis verra s’afficher la rubrique ou l’article demandé et non l’interface privée.

Nous avons également conservé, pour simplifier, les mêmes noms de fichiers pour ce qui est des fichiers rubrique_ok.php3, rubrique_ok.html et article_ok.php3, article_ok.html. Mais cela n’est pas recommandé, car on donne accès aux squelettes et nous ouvrons la porte à des chemins de contournements possibles.

Pour renforcer la sécurité, on doit changer les noms des deux fichiers rubrique_ok.php3 et article_ok.php3 pour des noms de votre choix et modifier les fichiers rubrique_statut.html et article_statut.html en conséquence.

On peut changer également les noms des fichiers rubrique_ok.html et article_ok.html et modifier en conséquence les fichiers rubrique_ok.php3 et article_ok.php3. Cela complique la vie aux intrus qui voudraient contourner la limitation d’accès.

Exemple

On ajoute simplement une extension numérique au hasard à notre fichier [3] :

-  Changer le nom du fichier rubrique_ok.html ou rubrique_ok_5943.html
-  Modifier le fichier rubrique_ok.php3 (ou l’équivalent selon le nom que vous lui aurez donné)
//$fond = ’rubrique_ok’ ;
$fond = ’rubrique_ok_5943’ ;

Il faut aussi se méfier des fichiers appelés par des INCLURE. Si on donne accès au squelette, on donne aussi le nom de ces fichiers. Et si on donne le nom d’une inclusion qui appelle une partie cachée de l’article, on donne ainsi la possibilité d’appeler directement cette inclusion.

Personnellement, j’utilise même une variable de session qui protège ces pages si elles ne sont pas appelées par rubrique.php3 et article.php3 ainsi que les fichiers appelés par INCLURE. Cela pourrait faire l’objet d’une autre contrib.

Modifications additionnelles

Cette contrib est une simplification d’une utilisation plus complexe que nous faisons sur plusieurs sites de l’accès limités à l’interface publique.

Sur plusieurs d’entres eux, les articles, les rubriques, les brèves et même les sites référencés portant un des mots-clés du groupe Accessibilité n’apparaissent dans aucun menu du site lorsqu’on a pas le statut requis. Une fois identifié, les divers menus s’enrichissent.

Cela permet d’éviter la frustration de se voir refuser l’accès à une page alors qu’on nous l’offre dans le menu ou le plan du site. [4]

Cela devrait faire l’objet d’une autre contrib.

Voir Comment gérer les rubriques réservées

Notes

[1Sur plusieurs sites, j’utilise ce groupe de mots-clés pour les quatre options possibles.

[2Les bidouilleurs pourront ajouter un message de leur cru pour avertir l’internaute qui se sera identifié et qui n’aura pas le statut requis qu’il ne peut visualiser cette page, et ne plus afficher le formulaire.

[3En conservant le même nom suivi d’une extension, on facilite la gestion des fichiers qui se retrouvent souvent classés par ordre alphabétique dans des outils comme Dreamweaver ou autre.

[4Il faut aussi penser à modifier les fichiers backend.php3 si on ne veut pas que les rubriques ou les articles non accessibles y soient listés.

Discussion

26 discussions

  • 13
    c.cormier

    Bonjour
    Excellente contribution. Je l’utilise sur plusieurs sites. Quand sera publiée la suite, c’est dire la possibilité de cacher les rubriques et articles dans les menus quand le statut du visiteur ne permet pas d’y accéder.
    Cordialement

    • Oui, ça prendrait une autre contrib complémentaire. En fait, les deux étapes suivantes que je vais documenter sont « Comment ne pas afficher dans les différentes menu et dans le plan du site les articles et rubriques non accessible au visiteurs. »
      Et « Comment restreindre l’accès d’un article ou d’une rubrique dans l’interface privée par le statut. » Ce qui est très simple mais qui demande d’ajouter quelques lignes de code dans quelques fichiers du coeur de SPIP.

      C’est pour bientôt.

    • « Comment restreindre l’accès d’un article ou d’une rubrique dans l’interface privée par le statut. »

      AAAARRRGGGHHHH ! je suis impatient de voir cette contrib. vu la qualité de la précédente... chapeau bas et tapis rouge !

      Reste que je crois comprendre qu’elle demandera de toucher au coeur de SPIP, et de fait, risque de ne pas être « compatible » avec les évolutions de SPIP. Est-ce que j’ai bien lu ?

    • Il n’y aura pas de problème avec les nouvelles évolutions de SPIP. On n’ajoutera simplement une condition tester par fonction dans le coeur de certaines pages de l’interface privée pour savoir si l’internaute aura un droit de regard ou non à certaines rubriques ou articles.

      À moins que le système de pluggin offre une porte d’entrée à l’endroit désiré (ce dont je doute. Je n’ai pas suivi en détail ce sujet.) ces modifications éventuelles au coeur de SPIP, bien que mineurs, devront être reportées dans les fichers des prochaines versions. Mais, je le souligne à nouveau, elles seront très simples ces modifications...

      J’utilise déjà ces tests pour gérer des groupes d’accès à certaines rubriques et leurs articles dans l’interface privée !

    • J’utilise déjà ces tests pour gérer des groupes d’accès à certaines rubriques et leurs articles dans l’interface privée !

      Voici donc le coeur de mon « problème », car cette fonctionnalité manque cruellement dans SPIP au niveau de la gestion des auteurs.

      Ces tests permettent-ils d’offir par la suite la fonctionnalité suivante :
      -  accéder et intervenir uniquement sur certaines rubriques et/ou articles dans l’espace privé en fonction du statut de l’auteur et de son appartenance à un groupe X ou Y ?

      Ainsi, les auteurs techniques n’auraient aucun regard sur les rubriques et articles des auteurs juridiques, et vice versa...

      Dans ce « post », j’exprime mon besoin auquel tu sembles avoir déjà une solution, si je ne m’abuse :)

    • Voici donc le coeur de mon « problème », car cette fonctionnalité manque cruellement dans SPIP au niveau de la gestion des auteurs.

      C’est une question de « philosophie » semble-t-il... SPIP a beaucoup évolué depuis ses origines. Il ne sert plus seulement de système collaboratif de rédaction pour un Webzine.

      De permettre la gestion des droites d’accès est un besoin que certains ont, d’autres ne l’ont pas. Pour beaucoup d’option, SPIP se veut flexible, permettant à ceux qui ont un besoin, d’activer une option et à l’autre, de la désactiver.

      Pourquoi ne pas offrir en standard la possibilité de gestion des droites d’accès dans l’interface privée ?

      Il faut leurs demander...

      accéder et intervenir uniquement sur certaines rubriques et/ou articles dans l’espace privé en fonction du statut de l’auteur et de son appartenance à un groupe X ou Y ?

      Bon... Là tu as compris où on va en venir. Mais ce ne sera pas dans cette contrib.
      Je gère actuellement des groupes dans l’interface privée. J’ai beaucoup modifié une contrib existante pour ce faire (voir : Créer des groupes, limiter l’accès aux rubriques et aux articles...). Je n’ai pas encore d’exemple en ligne du résultat. Je teste en local pour le moment.

    • Je crois que nous sommes sur la même longueur d’onde quand à la philosophie de SPIP. Je ne tiens en aucun cas à lancer une polémique sur l’intérêt de telle ou telle orientation de SPIP et de ses développements. Qui suis-je pour juger et à partir de quelles lois (très philosophique cette question :) ?

      Je suis allé voir la contrib. dont tu parles... Une approche très intéressante de mon point de vue. A lire entre les lignes, il ne « manque plus grand chose », enfin façon de parler :)

      Si je peux t’aider à tester, c’est avec plaisir. Autrement tiens moi informé, s’il-te-plait, d’une éventuelle date du livrable en version beta (c’est comme ça qu’on dit :))

    • C’est noté !

    • bonjour,

      j’ai transféré les fichiers, mais il y a un fichier svn.revision et j’en ai déjà un qui ne contient pas la même chose à la racine... dois-je l’écraser ? copier le contenu à l’intérieur de celui déjà existant ?

      Merci.

    • Non, tu n’as pas besoin de conserver ce fichier.

    • ah merci beaucoup pour la réponse car je galère depuis l’autre jour avec cette histoire de restreindre l’accès aux pages... de plus, quand je dézippe, il me manque des fichiers rubrique.php3, article.php3, sinon je les trouve dans dist ou écrire, je sais plus, mais il n’y a pas cette fameuse variable $fond... donc je suis bien perdue là... alors je vais suivre ton tuto, je viens de jeter un oeil vite fait, et il a l’air beaucoup plus complet, merci mille fois !!!

      pour info, j’essai de restreindre une partie du site (en construction) (voir le lien) où des élèves poseraient leurs vidéos, mais certaines doivent absolument avoir un accès privé. Sinon je vais être obligée de faire un répertoire en dehors de spip avec htaccess normal, mais bon, j’aimerais bien rester dans la même architecture quand-même et puis ça m’intéresse de toutes façons de savoir le faire dans spip. J’ai vu que beaucoup de personnes d’ailleurs posent la même question sur un autre post, restée sans réponse.

    • yesssss ! ça marche ! j’ai suivi ton tuto, il est super clair, simple efficace et surtout ça marche ! merci mille fois, par contre j’ai voulu poster pour dire merci sur ton post, ça ne l’a pas ajouté... donc je te dis merci ici. ;-)

      Voir la page cachée (bon jeme suis pas encore occupée du css... ca va viendre)...

    • Bonjour,
      J’utilise Spip 1.9.2 avec le plugin alternative comme squelette. J’ai utiliser le fichiers dans le zip, et j’ai modifé les fichier rubrique_ok.php3 et article_ok.php3, mais cela ne semble pas marcher.
      Qu’est-ce que j’ai publié de faire ?

    • La version ici est peut-être plus à jour : http://monsitespip.com/spip.php?article4.

    Répondre à ce message

  • 1
    Mick’

    Bonjour,
    J’utilise cette contrib, et effectivement, lorsque j’ai restreint un article avec le mot clé « Visiteur » je tombe sur une demande de connection. Par contre, je ne parviens pas à trouver le moyen de renseigner les droits pour un visiteur. Si j’ajoute un nouvel auteur, je n’ai la possibilité qu’Administrateur, Redacteur ou poubelle.
    Pouvez vous m’aider ?
    Merci d’avance.
    MB

    • C’est un classique ! Spip n’affiche pas toujours cette possibilité. Il y a un autre message dans cette page qui en parle...

    Répondre à ce message

  • 2

    Merci pour cette contrib.

    Mais chez moi ça ne marche qu’avec « administrateurs », embêtant. Dès que je mets rédacteurs et visiteurs, ça me mets une page blanche en ligne au lieu de me demander un login... J’ai rien vu à ce sujet dans la liste des réponses. Avez vous une solution ?

    Merci d’avance

    • Vérifie tes mots-clés ! Si tu n’as pas écrit « Administrateur », « Rédacteur » et « Visiteur » tel quel, au singulier (tu me parles de « administrateurs » avec un « s »). S’il y a la moindre différence, les squelettes contenus dans les fichiers rubrique_statut.html et article_statut.html trouveront bien un mot-clé du groupe Accessibilité mais ne retournera rien.

    • Ok merci, j’avais effectivement écrit le mot différemment...

      Ca marche parfaitement !

      Elsey

    Répondre à ce message

  • 10

    Bonjour,

    Cette contrib correspond à ce que je recherchais.
    En plus, elle marche (en local) sans difficulté, alors que je ne suis absolument pas programmeur. MERCI !

    J’aimerais maintenant que les rubriques ou articles ainsi protégés soient signalés par une petite icône. C’est possible ? Comment m’y prendre ?

    • Oui c’est possible !

      Personnellement, j’utilise déjà un filtre qui me permet d’afficher ou non les titres dans les menus selon leur accessibilité pour l’internaute.

      Je viens de faire des tests afin de l’utiliser pour afficher une petite icône comme tu le souhaites.

      Selon qu’on utilise la version 1.9 ou une des autres, il y aura quelques différences...

      Je te reviens avec de l’info (un article) sur le sujet d’ici peu !

    • Ben dis donc, ils sont sympas les spipeurs (ou spipistes ?) !
      Merci de cette rapide réponse.
      J’attends avec impatience ton article.

    • En bon débutant, je dois essayer trop de choses à la fois.
      Je me débats avec les squelettes, les boucles, les balises...
      Faudrait pourtant que j’aie fini pour le 28 août !
      Sans compter la difficulté de vérifier : vider le cache, supprimer les fichiers temporaires et les cookies.

      J’en viens donc à ma question : les articles « protégés » semblent ne plus l’être en cas de « redirection ». Ai-je fait une mauvaise « manip » ? Peut-on remédier à cela ?

      Merci d’avance, Philippe

    • As-tu bien protégé l’article cible ? Si tu as protégé l’article que tu redirige, c’est normal.

      Lorsque tu utilisera le filtre dont je te parlais pour indiquer les articles protégé, tu pourra protéger les deux pour que les différents menus indique que ce lien pointe sur un article protégé.

      Sinon, il faut protéger seulement l’article ciblé par la redirection et non celui qui redirige.

    • OK.
      Je crois que j’ai bien compris.

      Seul petit souci, la redirection va vers une adresse qui n’est pas sous spip.
      Mais vers un dossier (un petit annuaire) protégé par .htaccess.
      Que j’espérais rapatrier sur le site principal afin d’éviter à mes « visiteurs autorisés » de re-saisir leurs identifiants.

      Tant pis.
      Tout le reste me convient parfaitement.
      En attendant la petite icône signifiant l’accès restreint...

      Merci !

    • bonjour
      excusez l’intrusion d’un débutant ( le mot est faible ).
      j’essaie d’appliquer la contrib de base pour un site d’école sous éva-spip ( simplement créer une rubrique privé par un mot de passe ) ; mais dans la partie :

      Modifiez le fichier rubrique.php3 :
      Changez la valeur de $fond :

      //$fond = « rubrique » ;
      $fond = « rubrique_statut » ;

      Modifiez le fichier article.php3 :
      Changez la valeur de $fond :

      //$fond = « article » ;
      $fond = « article_statut » ;

      faut-il remplacer tout le fichier ou rajouter ces lignes de code ( mais où alors ? et à la place de quoi ? ) .

      merci de répondre à un vieux galérien qui commence à attaquer la falaise !

      françois

    • Bonjour,

      Comme tu le retrouveras dans le dossier zippé et que tu peux télécharger plus haut et décompresser, tu changes le fond appellé par ton fichier rubrique.php3 pour qu’il appelle le fichier rubrique_statut.html. Et le fichier rubrique_ok.php3 appellera, lui, ton squelette situé actuellement dans ton fichier rubrique.html.

      On ne fait qu’un petit détour qui nous permet de filtrer ceux qui peuvent ou non voir la rubrique.

      Même chose pour l’article.

      La version de cette contrib pour spip 1.9 que je suis à finaliser a pris une cure d’amaigrissement : encore beaucoup plus simple ! À venir bientôt...

    • Bienvenue au club !

      Pas évident de débuter en autodidacte dans ces fichus codes, qui varient entre le PHP, le HTML (et les CSS) et les boucles Spip !!!

      Si tu n’as pas trouvé :
      -  tu ouvres article.php3 avec un éditeur (le bloc-notes suffit).
      (Il est à la racine du site, pas dans le dossier squelettes).
      -  Tu lis alors entre les balises php :

      $fond = « article » ;

      $delais = 24 * 3600 ;

      include (« inc-public.php3 ») ;

      -  Tu ajoutes alors // devant $fond, ce qui le transforme en commentaire, donc sans action dans le script.
      -  Puis une ligne en-dessous : $fond = « article_statut » ;

      Soit :

      //$fond = « article » ;

      $fond = « article_statut » ;

      $delais = 24 * 3600 ;

      include (« inc-public.php3 ») ;

      -  Tu sauvegardes. Tu fais pareil avec rubrique.php3. Et le tour est joué.
      Ca marche super ! Merci à Iago de nous faire profiter de ses compétences.

      Bon courage pour la suite.

    • Pas évident de débuter... Non, je ne m’en souviens que trop !
      Bien que je patoge dans Spip depuis plusieurs années, je n’ai pas oublié ces doux moments ;-).

      C’est pourquoi, un de mes objectifs à travres mes quelques contribs reste d’être, dans la mesure du possible, abordable pour un néophyte

      Merci donc de m’aider à améliorer les explications et n’hésitez pas à me faire des commentaires pour la version 1.9 sur laquelle je travail en se moment.

      ps. La fonction utiliser pour la 1.9 pourrait être utilisé aussi pour la 1.8.3. Je vais probablement en faire la démonstration bientôt sur mon nouveau site de travail Mon Site Spip 1.9

    • de retour ;
      merci ;
      non , c’est pas évident ( bill gates jouait aux petites voitures dans son garage quand j’étais au lycée ) mais un site c’est vraiment génial pour les élèves, donc je m’accroche même si je suis bouché comme me le dit un copain ( plus jeune ) à l’école ( il parait que l’on perd 200 000 neurones par jour après 20 ans )
      françois

    Répondre à ce message

  • Pour la version 1.9 de SPIP, j’ai publié une nouvelle version de cette contrib.

    Répondre à ce message

  • 3

    super contribution

    ca marche tres bien chez moi pour le public mais la question est la
    la version 1.9 arrive a grand pas
    ou peut on avoir une variante pour ce genre de restriction

    • Suivi oblige, je vais bien devoir me coltiner sa conversion en 1.9 d’ici peu en effet !

      À suivre...

    • Salut, c’est encore moi !peux me dire pourquoi le code que tu m’avais donné rest grisé ? je suis toujours en local pour l’instant ça ne gêne pas ?

      ma question c’était que je voulais faire un accés restreint sur un article (1er sens du terme dans spip) où on demanderait le login et le mot de passe pour entrer.

      Merci

      Aurélie

    • Salut Aurélie,

      Je suis un peu confus. Peux-tu m’écrire directement par email pour me redonner plus de détails. Je pourrai mieux t’aider en privée : francois.vachon@iago.ca

    Répondre à ce message

  • 1

    Bonjour.

    Je cherche à faire pour mon site un lien se connecter. En me basant sur cette contrib celà me donne une fois connecter un lien qui normalement renvoie sur l’url du site or le lien me renvoie sur la page login_public donc je tourne en rond.
    Au final, je veux arriver à ce qu’une fois connecté on est accès au menu suivant notre statut. Exemple un visiteur authentifié aura accès une rubrique que le simple visiteur ne verra pas dans le menu.

    Si quelqu’un pouvait m’éclairer.
    Merci d’avance.

    • Je cherchais la même chose et j’ai bricolé une solution qui fonctionne. Rien de très pro, j’ai découvert SPIP et le PHP il y a 10 jours.

      Prérequis et limitations : situation simple, pour moi n’existent que des rédacteurs et le public.
      Cette solution suppose de dupliquer tous les squelettes rubrique, article, sommaire... donc faut pas que le site soit trop complexe.

      Tout est basé sur la contrib de base : par exemple pour les rubriques, je créé un fichier Rubrique_pub.html (pour public) dans lequel je mets des filtres dans les boucles à partir des mots clef
      exemple :

      <BOUCLE_article-numerotes(ARTICLES) {id_rubrique{{}{titre_mot!="Redacteur"}{}}par num titre}>

      «  != » veut dire « différent », « redacteur » est mon mot clef. donc la boucle n’affichera pas les articles réservés aux Redacteurs et admins.

      Je crée un fichier rubrique_pub.php3 qui pointe vers rubrique_pub

      <?php
      $fond = "rubrique_pub";
      $delais = 2 * 3600;
      include ("inc-public.php3");
      ?>

      Ensuite petite modification du fichier rubrique statut.html pour qu’il envoie vers la zone public ou privée selon le statut :

      <BOUCLE_accessibilite(MOTS){id_rubrique}{type=Accessibilite}>
      		<BOUCLE_a(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Publique}>
      			
      			<INCLURE(rubrique_pub.php3){id_rubrique}>
      			
      		</BOUCLE_a>
      		<BOUCLE_b(RUBRIQUES){id_rubrique}{id_mot}{titre_mot=Redacteur}>
      			<?
      			if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
      			?>
      			<INCLURE(login_public.php3){id_rubrique}>
      			<?
      			}
      			else {
      			?>
      			<INCLURE(rubrique_ok.php3){id_rubrique}>
      			<?
      			}
      			?>
      		</BOUCLE_b>
      		
      	</BOUCLE_accessibilite>
      <{{INCLURE(rubrique_pub.php3){id_rubrique}>}}
      <//B_accessibilite>

      Idem avec les fichiers articles

      reste le problème du sommaire que tu soulèves.
      Je crée un sommaire_pub.php3 qui pointe vers un fichier sommaire_pub.html qui contient les filtres dans les boucles
      Index.php3 pointe vers sommaire_pub.php3
      Dans sommaire_pub.html un bouton invite à se connecter :

      	<a class="bouton" href="#URL_SITE_SPIP/sommaire.php3">Accès adherents</a>

      Ce fichier sommaire.php3 est modifié pour pointer vers un fichier sommaire_statut.html qui comprend ce code :

      <?
      			if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
      			?>
      			<INCLURE(login_public.php3){sommaire}>
      			<?
      			}
      			else {
      			?>
      			<INCLURE(sommaire_ok.php3)>
      			<?
      			}
      			?>

      Si la personne n’est pas connectée, login_public est invoqué et après connection, il renvoie sur la page sommaire.html
      Dans sommaire.html, pas de filtre et le bouton devient :

      <a class="bouton" href="#URL_LOGOUT">Deconnexion</a> 

      , il renvoie donc sur Login_public.html ce qui permet de se deconnecter.

      Idem pour le plan du site et autres

      ça parait un peu compliqué, mais ce n’est qu’un developpement de la contrib de base et le resultat sur mon site est nickel, le visiteur voit un bouton se connecter qui l’envoie sur la boite de connexion qui le renvoie direct sur la page full ou il retrouve une autre mise en page et un bouton « se deconnecter »

    Répondre à ce message

  • 3

    Merci à Iago pour cette contrib qui me simplifie bien le boulot.

    Par contre je dedouble les squelettes pour ne pas que les visiteurs aient le sentiment d’être environnés de portes fermées.

    Reste un problème qui est celui du sommaire. j’ai 2 squelettes « sommaire », un full et l’autre filtré. Comment passer proprement du filtré vers le Full via une vérification de droit et eventuellement boite de connexion ?

    J’ai essayé l’entête en PHP décrite plus bas, mais en l’absence d’ID_rubrique, après connexion la boite de connexion reste plantée avec comme seule ressource le retour à l’accueil.. qui est le sommaire publique que l’on voulait quitter.
    Et j’imagine que je vais avoir les mêmes difficultés avec le plan..

    Comment sont repérés dans SPIP ces éléments ?
    Merci de vos avis éclairés

    Denis

    • Je précise ce que je cherche car je ne suis peut-être pas bien clair ; l’idéal serait :

      1 / Index.php3 ou sommaire.php3 capable de filtrer les visiteurs déjà enregistrés (précédente session) et de les envoyer vers le bon sommaire (Filtré ou Full)

      2/ Un bout de code comme décrit + bas en tête du fichier sommaire Full qui ouvre la boite de connexion et en fermeture de celle ci renvoie vers la racine du site, donc avec le filtre vers le sommaire Full

      J’ai essayé le filtre, sans connaissance PHP et en m’inspirant du bout de code de l’entête, mais j’ai une erreur, header non modifiable ou quelque chose comme ça.

      Je me bats avec ce truc depuis des heures si vous avez une idée..

      Merci

    • Selon nos besoins, on peut afficher ou non les liens vers les pages protégées. Sur les sites où j’utilise cette contrib, j’applique majoritairement un filtre qui permet de n’afficher dans les différents menus ou tris, page sommaire, plan du site ou autre, que les éléments dont le statut d’un internaute autorise la visualisation.

      Donc, pour un seul et même squelette, une personne ayant un statut de rédacteur verra dans le plan du site, par exemple, beaucoup plus de rubriques, d’articles, de brèves et même de sites référencés que celui qui a un statut de visiteur, qui, lui, en verra aussi plus qu’une personne non- identifiée.

      Mais ça demande une modification majeur de vos squelettes. Ça demanderait une autre contrib en fait.

    • J’imagine bien, un test de detection en haut de chaque page, ou/et Index.php3 qui envoie sur un script de detection du statut, ce qui génère une variable qui suivra la visite, + un filtre (localisé sur un fichier externe pour ne pas tout retaper à chaque fois) basé sur des mots clef (pour faciliter la vie du redacteur)pour chaque boucle de la page. Visiblement rien d’impossible, j’ai plus qu’à me taper le bouquin de PHP :-o Je ferais une contrib dans quelques mois ;-)

      A+

    Répondre à ce message

  • 3

    Très bonne contrib.

    Il manque juste l’addon pour limiter l’accès également dans l’espace privé.

    Où puis-je trouver des informations [1] pour réaliser ce petit tour de force.

    J’en aurais besoin avant la fin de l’année. Cela serait très utile pour les écoles. Je peux, si c’est utile, jouer le beta testeur.

    • Elle sera là avant la fin de l’année. Il faut juste que je prenne le temps de transposer la fonction sur une autre que j’utilise déjà. Et je te rassure, c’est vraiment simple à installer dans l’interface privée.

      Je retiens ton offre de bêta testeur et je t’en donne des nouvelles d’ici peu pour que tu puisses le tester d’ici la fin de l’année.

      Actuellement, je le fais avec une système de gestion de groupes permettant de créer des profils d’usagers limitant l’accès de façon encore plus pointue. Ce qui serait bien aussi pour un site comme le vôtre.

      Dans les faits, je combine les deux. Même les trois, puisque j’utilise aussi une autre contrib Restriction de contenu dans l’espace public et privé par le « bloc statut »
      qui te permet de choisir d’afficher ou non des éléments d’articles selon le statut tant dans l’interface privée que publique.

      D’ici une autre contrib...

      Pour une idée de ce que la gestion de groupe peut donner dans l’interface privée, je t’invite à visiter une section où j’ai commencé à documenter le tout sur un site que j’utilise pour la formation en ligne sur SPIP : http://aide.iago.ca/article.php3?id_article=226
      Les pages de cette section sont protégés dans l’interface privée et publique. Mais j’ai créé un usager dans son groupe avec le statut de visiteur :
      login : visiteur
      mot de passe : visiteur

      C’est une section de travail pour le moment, pas une contrib officielle. Le code n’est pas encore disponnible ! Mais ça marche... :-)

      Je me suis inspiré pour ça, de la contrib en attente de validation de Coyote "Créer des groupes, limiter l’accès aux rubriques et aux articles..." Rendons à César...

    • Bonjour,

      Je souhaiterais associer à une fonctionnalité de restriction des rubriques dans la partie publique une gestion de groupes d’utilisateurs, de façon à pouvoir créer des groupes de visiteurs, qui peuvent accèder à des rubriques différentes.

      As-tu publié cette contrib dont tu parles ? J’ai visité le site « iago » avec le tutoriel sur la gestion de groupes et cela paraît très abouti :-)

      Merci par avance pour ta réponse.

      Sandrine
      http://www.robins-des-villes.org

    • Pas pour le moment. Elle est en fonction sur certains de nos sites en SPIP 1.8.3 Mais je pense plutôt la rendre disponible sous forme de Plugin. Mais je manque un peu de temps ...

    Répondre à ce message

  • 9

    une variante hyper-simple pour les cas simples : rien à modifier dans votre spip à part le squelette de la page dont vous voulez resteindre l’accès.

    exemple : pour restreindre la page plan.html aux admins et rédacteurs : ajouter ces lignes de code en tout début de votre squelette plan.html (sans un seul espace blanc avant)

    <?php 
    if (isset($auteur_session['statut'])) {
      if ($auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo')  header("location:spip_login.php");
    } else {
      header("location:spip_login.php");
    } 
    ?>....le reste de votre squelette plan.html ...

    testé avec succés sur Spip 1.8.3.

    si vous placez ces lignes sur tous les pages d’un squelette (sauf bien sur login.html pour pouvoir s’identifier) vous obtenez un site privé accessible uniquement aux rédacteurs autorisés (intranet, site de travail, ...)

    • Bonjour,
      moi je voudrais juste restriendre l’accés à un article, est ce que ta solution pourrais marcher ?
      j’ai une rubrique « actualités » dedans j’ai 7 sous rubriques, mais il n’ y a que « télécharger le journal » que je veux restreindre à certains. Peux - tu m’aider ???
      Merci
      Aurélie

    • Bonjour Aurélie,

      Il y aurait bien des solutions pour ton cas. Mais, oui ! tu pourrais utiliser cette contrib pour ne limiter qu’un article.

      Comme tu pourrais aussi utiliser une autre de mes contribs : Restriction de contenu dans l’espace public et privé par le « bloc statut ». Elle te permettrait d’afficher dans ton article un message différent selon le statut de l’internaute. Tu pourrais ne pas afficher le lien sur le « télécharger le journal » pour les uns et le mettre pour les autres...

      Un des avantages de cette contrib, c’est que personne ne tomberait sur une page de login sans explication.

      On peut aussi faire une page spéciale pour ce seul article et faire un test par le statut que pour elle...

    • je ne comprend pas tout ! que dois je faire si je veux juste restreindre l’accés à l’article 44 de la rubrique 55 par exemple ??
      merci merci. Aurélie

    • Soyons simple !

      Pour limiter l’accès qu’à l’article 44, tu peux mettre en tête de ton squelette de ta page article.html :

      <?php
      if ($_REQUEST['id_article']==44&&$auteur_session['statut']!='6forum'&&$auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
      	header("Location:article.php3?id_article=45"); // Adresse de destination à modifier au besoin
      }
      ?>

      Ici, si la personne n’est pas connectée comme administrateur, rédacteur ou visiteur, elle sera redirigée sur l’article 45.

      Tu mets l’adresse que tu veux.

      Si tu veux une formulation te permettant d’autres choix de redirection tu peux mettre :

      <?php
      
      // Redirection d'article par entête 
      
      switch($_REQUEST['id_article'])
      	{
      		// Liste des redirections :
      		case '44'; // Numéro de l'article à rediriger
      				// Rediriger cet article sur un autre si l'internaute n'est pas connecté commme administrateur, rédacteur ou visiteur
      				if ($auteur_session['statut']!='6forum'&&$auteur_session['statut']!='1comite'&& $auteur_session['statut']!='0minirezo'){
      			header("Location:article.php3?id_article=45"); // Adresse de destination à modifier au besoin
      			}
      		break; // fin de la redirection		
      	}
      ?>

      Et là, tu ajoutes autant de CASE avec le no d’article que tu veux avec la redirection que tu veux selon le statut que tu veux...

      N’oublie pas de mettre celà en tête de ton squelette !

    • ok je vais essayer ça alors !! mais encore une ptite question l’article qui dit par exemple « vous n’avez pas accés à cette partie du site », comment tu fais pour le cacher ? je veux dire je créé pas un article comme si je créais un article normal avec du contenu ?

    • j’ai pris ta première solution, dans l’entête du squelette c’est bien dans le « head » ??? parce que j’ai une erreur comme quoi il me manque des tags fermants pour article-principal, keywords, author, hierarchie, et auteurs. En plus, la partie de code reste grisée !! bizarre non ? tu peux encore m’aider ?

    • Non ! Tu mets ce code avant toutes choses dans ton squelette. Ne mets rien avant, ne le met pas entre d’autres tags. Débute avec ça !

    • Tout dépend de comment tu as aborder tes squelettes. J’utilise beaucoup d’articles sur mes sites pour toutes sortes d’usage autre qu’un « article » au sens « classique » du terme.

      Bien que beaucoup de squelettes soient construits pour afficher par défaut tous les articles, de les lister dans tous les menus, dans le plan du site et tout, ce n’est pas un comportement de SPIP mais un comportement déterminé par ces squelettes. C’est un choix des concepteurs de squelettes, pas de SPIP. Il ne faut pas confondre les deux. Trop souvent on entends dire, « SPIP peut faire ceci, mais SPIP ne peut faire celà » alors que c’est « La plupart des squelettes n’ont pas été pensé pour permettre de faire ceci ou celà... »

      Sur mes sites, les articles ou les rubriques qui n’ont pas le mot-clé ’menu’ ne sont pas lister dans les différents menus du site.

      J’ai plusieurs articles qui servent à libéler différents messages comme celui avertissent qu’une page est réservées. On peut même en faire autant de traduction qu’on veut... On peut faire un message générique pour toutes les pages ou choisir un message spécifique pour un secteur, pour une rubrique ou autre... Et ce, avec de simple article « ordinaire ».

      C’est très flexible, quoi !

    • j’ai mis le code au tout début, mais il reste grisé et j’ai toujours la même erreur ! pour ce qui est de l’article d’avertissement, moi j’utilise le squelette renley, je pense que mes articles sont au premier sens du terme avec spip, comme je suis débutante je ne fais pas des choses trés compliquées !! peux tu me dire comment je dois faire pour cacher cet article et d’ou vient cette erreur ?
      merci
      aurélie

    Répondre à ce message

  • 4

    salut,
    J’ai testé cette contrib mais rien à faire, ca ne marche pas comme ca devrait. Elle me permettrait pourtant de simplifier énormément mes problèmes actuels de restrictions. J’ai lu tous les commentaires et réactions pour tester et vérifier mais je ne vois toujours pas le problème.
    La restriction a l’air de fonctionner puisque après ajout du mot clé l’article/rubrique ne s’affiche plus (erreur 404), mais par contre aucun profils ne peut plus la voir (pas même l’admin). J’ai vidé le cache, essayé sur une version toute neuve de la 1.8.3... rien a faire. je dois oublier un truc. Si on pouvais me dépanner ???

    • Tu ne devrais pas avoir d’erreur 404.
      Normalement, tu devrais être orienté sur ta page de login plutôt (login_public.php3). Est-ce que tu as bien le duo login_public.php3/html ?

    • oui, ils sont présents et à priori corrects...
      peut-être une piste, un bug qui n’apparait plus sur le dernier des spip utilisé pour tester ta contrib : impossible de trouver article_status ou rubrique_status...

    • je finis : mais ces deux fichiers sont bien sur presents dans le répertoire.
      bixente

    • salut,

      juste pour dire que tout marche nikel. Apparemment c’est la nuit ou le reboot qui ont fait « réapparaitre » le fichiers dans le répertoire ;-)

      sous agora idem, juste a modifier la variable à tester. ’statut’ n’est plus utilisé dans la base, le champs est present mais il n’y a que mon compte qui est la valeur ominirezo. tous les autres sont null. en utilisant le champs ’profil’ tout roule.

      merci pour ton aide

    Répondre à ce message

  • 3

    Merci pour cette contrib que j’ai installe tres facilement et qui fonctionne tres bien...sauf que depuis, les traductions automatiques ne marchent plus...Quelqu’un aurait une explication et un remede ?
    merci par avance

    • Puisqu’il y a plusieurs façons d’utiliser les traductions, on aurait besoin de plus de détails pour t’aider. Personnellement, je n’ai aucun problème de ce côté. Mes traductions d’articles sont dans les mêmes rubriques que leur version originale (aucun dédoublement de rubrique par langue ...) Et le tout fonctionne très bien. Toi ?

    • Les traductions marchent bien quand elles existent sous la forme d’un fichier par langue, mais c’est avec les tag multi que ca coince...
      Merci

    • Je t’invite à m’écrire en privée si tu as toujours des problèmes de langue. Je pourrais peut-être t’aider...

    Répondre à ce message

  • 1

    Merci pour cette contrib très simple à mettre en place. J’ai un probleme que personne ne semble avoir, c’est toujours une histoire de cache, quand je me deconnecte, j’ai toujours accès aux pages restreintes tant que je n’ai pas vidé le cache de mon navigateur. J’ai le meme probleme avec les autres contrib de gestion d’acccès restreints. J’ai réinstallé SPIP pour etre sure de ne pas avoir fait d’erreur.
    Pour tester les sessions, j’affiche la valeur de $auteur_session[’statut’] et effectivement ça m’affiche toujours 6forum, meme déconnectée
    Une idée ?

    • Je n’ai pas du tout ce comportement de mon côté. Je teste avec Explorer et Firefox... Dès que je change le mot clé sur un article, si je rafraichis simplement la page, mon droit d’accès change.

      As-tu une adresse où je pourrais tester ce que tu dis ?

    Répondre à ce message

  • 3

    Bonjour, et merci pour cette contribution qui est d’une simplicité logique presque déconcertante au regard des autres proposées.

    Mon site est basé sur la version 1.8.3php.

    Je pense avoir suivi toute la procedure
    c’est à dire que :

    _j’ai mis les 3 fichiers html dans le dossier squelette du spip

    _j’ai mis les 3 fichiers php à la racine du spip (en changeant l’extension php3 en php, ce qui ne devrait pas avoir d’influence sur la suite)

    _j’ai changé les fichiers rubrique.php et article.php pour qu’ils appellent respectivement rubrique_statut.html et article_statut.html

    _j’ai créé mon groupe de mot clés Accessibilité et les mots clés indiqués.

    _Enfin, j’ai selectionné Administrateur lors de l’edition de mon article test.

    Mais je n’ai rien...
    Quel que soit le statut minimum déterminé pour l’article ou la rubrique, la page est affichée sans problème.
    Y-a-t-il une étape cachée pour faire fonctionner cette contribution ?

    Je signale au passage sans vouloir être alarmiste que j’ai testé d’autres contributions incluant du php dans des boucles SPIP et qu’aucune d’elles n’a fonctionné.
    Comment peut on vérifier que le php inclu dans article_statut.html est bien interprété ?

    Merci d’avance pour vos réponses claires

    • Bon ! Premièrement, il n’y a aucun problème à mettre du php dans une boucle.

      j’utilise se système sur tous mes sites depuis SPIP 1.7.2 à 1.8.3.

      Questions

      Si tu viens de modifier l’article ou la rubrique, tu es donc connecté comme administrateur. As-tu bien pensé à te déconnecter ? Sinon, c’est normal que tu puisses toujours voir la page.

      Pour tester, tu peux travailler avec deux navigateurs : tu te connectes dans un (login et mot de passe ;-))mais pas dans l’autre. Tu fais tes modifications, par exemple dans Explorer et tu visualises la page dans Firefox.

      Si ce n’est pas ça, tu peux m’écrire directement pour qu’on regarde plus en profondeur tes squelettes pour trouver le problème.

    • Bon, je ne sais pas d’où venait mon problème, j’ai réparé ma base de données, j’ai refais le squelette et ça marche.

      Au passage, je signale que le logiciel windiff (téléchargable gratuitement) m’a bien aidé pour vérifier les différences entre mes deux dossiers squelette
      (l’horrible ancien et le nouveau propre repris à zero)

      je vous souhaite à tous plein d’excellence spipienne !

      ps : je tente de développer un squelette conforme aux normes d’accessibilité (texte avant menus quand le style est déselectionné, navigation au clavier...) définis sur la-grange.net/accessibilite/
      Je donnerais des nouvelles s’il fonctionne correctement.

    • Bonjour à tous,

      je viens d’installer les fichiers sous SPIP1.8.3 et j’ai eu les mêmes soucis que Pactole.

      Le problème vient des accentuations sur le groupe « Accessibilité » et le mot clef « Rédacteurs ».

      Ma base est en UTF-8.

      En supprimant les accents dans SPIP et sur les squelettes _public.html tout fonctionne apparement.

      Je n’ai pas encore été au bout de l’utilisation du hack, mais je continu.
      Merci pour ce travail !!!

      françois.

    Répondre à ce message

  • 3

    Bravo pour cette contrib’ !
    Deux questions dessus :

    1) Comment se déconnecter simplement (utile si on est sur une machine publique) sans passer par exemple par la partie privée du site ? Y a t il un script simple qu’on pourrait insérer ?

    2) Comment les robots se comportent face à ce filtrage ? N’y a t il pas un risque qu’ils indexent les pages protégées, dont des extraits pourraient se retrouver sur les résultats des moteurs de recherche ?

    • Comment se déconnecter simplement ?

      Tu peux ajouter simplement un lien sur ta page comme suit : <a href="#URL_LOGOUT"><:deconnexion:></a>

      Sur nos sites, l’internaute n’e voit pas la totalité des pages dans le menu s’il n’est pas connecté puisque les pages protégés ne s’affichent que si la personne se connecte et que si elle a le statut requis. Ainsi, si tu vas dans une rubrique « X » dans laquelle il y a un article « A » non protégé, un article « B » protégé niveau rédacteur et un article « C », niveau visiteur... Si ton statut est visiteur mais que tu n’es pas identifié, tu ne verra dans le menu ou dans le plan du site que l’article « A ». Une fois identifié et la page rafraîchie, tu verra dans le menu l’article « A » et « C » mais pas l’article « B ». Un rédacteur identifié, lui, verra les trois apparaître.

      Pour cette raison, nous offrons une boîte de connexion en PopUp qui permet de se connecter en tout temps ; ensuite de se déconnecter en tout temps.
      Voir http://aide.iago.ca/rubrique.php3?id_rubrique=22

      Pour ce qui est de robot, si un lien les mènent sur une page protégée, il tomberont comme n’importe qui sur la page de connexion et non sur l’article ou la rubrique elle même.

      Si sur ton site tu conserves les fichiers backend, il faudra filtrer les résultats de tes boucles pour supprimer les pages protégées.

    • Merci pour ces réponses ;

      Pour la déconnection, en fermant la fenêtre il me semble que ça ferme la session (si on a pas coché la case « rester identifier quelques jours » à l’identification) et donc l’identification. Est-ce vraiment fiable de faire ainsi ?

      Pour le filtrage, que ce soit pour les menus ou les fichiers backend, tu en parles un peu dans les autres questions en disant que tu allais faire une contrib bientôt... En as tu dis plus ici ou ailleurs ?
      Merci

    • Non ! je n’ai rien publié de nouveau. Je travaille actuellement sur une intrégration de cette contrib combinée à une gestion de groupe et à une gestion de profil d’utilisateur...

      Ce qui utilise encore ce dont je parlais et beaucoup plus.

      Je garde tout de même ce projet de contrib en réserve.

    Répondre à ce message

  • 4

    Bonjour,
    bravo pour cette contrib simple et efficace. J’ai un problème que personne ne rencontre apparemment sur le forum : après installation, lorsque je clique sur la rubrique protégée, j’ai une fenêtre d’identification avec ... 4 cartouches d’identification. C’est cocasse mais ça va plus loin puisqu’une fois les login/pword renseignés, la page qui vient après ... est aussi quadruple. J’en ai 4 qui se suivent, comme si une boucle avait été appliquée à l’affichage. C’est pareil dans irefox, Safari et Opera sous Mac OS X.
    J’utilise un squelette Biospip v4. mais a priori il n’y est pour rien puisque les tests se situent à la racine du site sur les php3 qui ne sont pas dans le répertoire squelettes.

    Quelqu’un a-t-il déjà rencontré ce problème ? Je précise : l’authentification sélective marche très bien.

    Cordialement,
    Fabinho

    • Si tu m’envoies un lien vers ton squelette, je pourrais peut-être t’aider.

    • J’ai exactement le même problème : affichage en quatre badeau répétés.
      J’utilise beespip sur SPIP 1.82g sur hébergeur oneandone

      Quelle est la solution ?

      Merci

    • J’ai eu le même problème sur mon site.

      Le problème se resout simplement !

      Le mot clef Rédacteur sous entend Administrateur en même temps, et Visiteur regroupe Rédacteur et Administrateur.

      Si vous mettez deux mots clef pour le même articles ou rubrique, une boucle imprévu se crée. On peut donc configurer le groupe de mot clef, avec un seul mot clef par article, on évite ainsi se problème d’affichage qui ralenti en plus le site !

      Bonne journée à tous !

    • Dans la configuration de ce groupe de mots-clé, il faut cocher « On ne peut sélectionner qu’un seul mot-clé à la fois dans ce groupe. »
      effectivement. Et avant, si ce n’est déjà fait, cocher « Utiliser la configuration avancée des groupes de mots-clés » dans la page ecrire/configuration.php3.

      Aurai-je oublié de le signaler ?

      Il ne faut jamais, en effet, mettre deux mots-clé de ce groupe sur un même article ou une même rubrique...

    Répondre à ce message

  • 1

    Bravo d’abord pour cette contrib très pratique.

    Sur un Spip standard pas de PB, ça marche parfaitement. Par contre j’ai eu quelques petits PBs en l’installant sur spip-eva : les rubriques auxquelles j’affecte le mot clé visiteur avec un affichage calendrier n’affichent aucun événement. (par contre aucun PB pour un affichage agenda)

    D’autre part, lors de l’identification du visiteur tout se passe bien sauf qu’après avoir entré le password correct , un nouveau formulaire redemande le login. Il suffit alors de cliquer sur valider pour accéder à la page privée.

    J’ai bataillé pour trouver une solutuion à ces deux problèmes , en vain...
    Avez vous une idée de ce qui pose PB ?
    Merci d’avance.

    • Malheureusement, je n’utilise pas Eva-Spip. Je ne peux donc t’aider sans voir tes squelettes.

      Peut-être pourrais-tu m’en dire plus hors forum.

      Si on trouve une solution, on viendra la donner alors ici...

    Répondre à ce message

  • 3

    Bonjour,
    Merci pour ce script qui marche parfaitement.
    Cependant, sauf si je me trompe, le fait de protéger une rubrique ne protège pas de facto tous les articles de cette même rubrique. Est-il possible de la faire ou faut-il protéger tous les articles un par un ?
    Merci d’avance,
    Yves

    • J’ai hésité au début entre protéger une rubrique seulement, une rubrique et ses articles, une rubrique et toute sa branche. Sur les sites où j’utilise ce système, j’utilise aussi un filtre qui permet d’afficher dans l’ensemble des menus du site que les titres des articles et rubriques dont un internaute a les droits d’accès.

      Il y aurait moyen de modifier le tout pour appliquer automatiquement le même niveau d’accès à l’ensemble de la rubrique ou même à toute sa branche.

      Peut-être que je vais ajouter dans une prochaine version de cette contrib, cette option.

      Pour le moment, pour une protection par branche, je combine la gestion des accès avec une variation personnelle du système de gestion de groupes.

      Si tu va sur notre site d’Aide en ligne voir cette rubrique, tu verra qu’elle n’est pas vérouillée bien que sa rubrique mère l’est.

      Je peux donc t’envoyer voir une section en plein coeur de rubriques réservées.

      Mais ça, c’est une autre histoire...

    • Merci pour cette réponse...Je ne voyais pas la solution par ce chemin.

      J’ai l’impression qu’on pourrait protéger facilement une rubrique et tous ses articles avec votre contribution en modifiant article_statut.html : on récupére par une boucle le numero de la rubrique où se trouve l’article, puis on fait le même contrôle que dans rubrique_statut.html

      Je ne sais pas si je suis clair...

    • Il suffit de vérifier si l’internaute a le statut pour accéder à la rubrique de l’article au lieu de vérifier s’il a le statut pour accéder à l’article lui-même.

      Tu peux le faire par un filtre ou une boucle tout simplement...

    Répondre à ce message

  • 2

    Bonjour et merci pour ce travail.

    Quelle astuce employer pour « créer » un log/pwd pour un visiteur.

    Je ne souhaite pas créer meme un rédacteur car il pourrait avoir accès en rédaction sur le site, ce que je ne souhaite pas bien sur

    Merci encore cordialement

    eric

    • Si tu veux pouvoir créer un nouvel auteur et lui donner le statut de visiteur, il y a un drôle de comportement de Spip que tu dois savoir : il faut qu’il y ait au moins un auteur avec le statut de visiteur pour pouvoir créer des auteurs avec le statut de visiteur par l’interface privée !!! Ou, accepter les inscriptions en ligne. Et oui...

      Donc, tu peux activer l’acceptation d’inscription des visiteurs en ligne sur ton site. Tu crées un visiteur. Tu otes l’acceptation. Et là tu pourras donner le statut de visiteur à un auteur et lui donner son login et mot de passe.

      Ah ! l’ergonomie...

    • Merci Iago

      CA fonctionne impec !!!
      Malgré tout le visiteur peut acceder (certes de façon tres restreinte, il pourra juste envoyer un message ...) à l’interface privée si il tape http://monsite/ecrire/
      comme ce projet n’est pour l’instant qu’un projet, cela va aller pour une demo.

      Merci encore.

      Si toutefois d’autres ont pu palier à cet acces je suis interesser de savoir comment ils ont pu proceder

      Eric

    Répondre à ce message

  • Cette méthode est claire, simple et fonctionne bien, merci.
    Il me reste un point gênant. Dans le moteur de recherche, une recherche sur le mot clé « Visiteur » me renvoie la liste des articles limités aux visiteurs. Bien sûr ces articles ne sont lisibles que pour les visiteurs authentifiés, mais ce serait mieux de pouvoir éviter cette réponse. Y a-t-il un moyen de faire ignorer tout le groupe de mots clé Accessibilité au moteur de recherche ?

    Répondre à ce message

  • Ciao,
    ottimo contrib. Ho modificato un po’ i tuoi file per gestire le rubriche protette in maniera gerarchica, ovvero, in modo tale che se una rubrica padre è protetta, lo saranno anche tutte le rubriche figlie ed i relativi articoli.

    Inoltre, ho utilizzato <INCLUDE(page.php3){fond=rubrique}....> in modo da non creare i file article_ok.php3 e rubrique_ok.php3 e rendere meno probabile che qualcuno possa richiamare direttamente le pagine senza passare per la verifica di login.

    Ovviamente tutto ciò funziona dalla versione 1.8.2e in poi.

    Se ti interessa posso inviarti i file.

    Ciao

    Répondre à ce message

  • 1

    Cette contribution a l’avantage d’être simple à mettre en œuvre. Cependant, l’accès réservé aux administrateur est illusoire : un rédacteur a accès à tous les articles par le back-office et peut ainsi prendre connaissance de ceux qui sont réservés aux administrateurs.

    On peut améliorer cette contrib en ajoutant des fichiers
    -  breve_statut.html breve_ok.php3 (pour appliquer le contrôle d’accès aux brèves),
    -  imprimer_statut.html imprimer_ok.php3 (pour se éviter la faille de sécurité qui permet d’accéder au contenu en accès restreint via « imprimer »)

    Ces fichiers sont une adaptation de ce qui est écrit dans l’article pour article_statut.html et article_ok.php3 il faudra aussi adapter breve.php3 avec $fond = « breve_statut » ; et imprimer.php3 avec $fond = « imprimer_statut » ;

    • Comme j’en parle dans un autre message, il y a un moyen simple d’appliquer le contrôle à l’interface publique. Mais ce sera expliqué dans une autre contrib.

      Pour ce qui est du contrôle de l’accès dans les divers autre pages du site, ou toute inclusion, il va de soit qu’il faut pousser le contrôle.

      Personnellement, j’utilise beaucoup de fichiers non standard qui sont tous testés par un filtre vérifiant le statut du visiteur. Une inclusion ne peut être appelée directement : elle est protégée par une variable de session...

      Cette contrib est une base. Chacun doit être vigilent selon ses squelettes.
      Comme tu le dis, elle est simple a utilisée. Mais elle demande, c’est normal, à être adaptée selon l’utilisation des squelettes de chacun.

      Il faut rester vigilant !

    Répondre à ce message

  • 1

    « ... les articles, les rubriques, les brèves et même les sites référencés portant un des mots-clés du groupe Accessibilité n’apparaissent dans aucun menu du site lorsqu’on a pas le statut requis. Une fois identifié, les divers menus s’enrichissent... »

    On fait comment ?

    Merci beaucoup pour votre travail.

    • J’utilise simplement un filtre qui vérifie si la personne a le statut requis.
      Disons pour simplifier que le filtre s’exprime comme suit pour une rubrique
      [(#ID_RUBRIQUE|id_statut« rubriques »)]
      Le filtre (dont je pourrais donner les détails dans une autre contrib) vérifie dans la tables demandée ( ici spip_rubriques demandé par « rubriques » ) si cette rubrique ( ici #ID_RUBRIQUE ) a un des mots-clés Administrateur, Rédacteur ou Visiteur.
      Si oui, il vérifie si le statut de la personne connecté est suffisant.

      Le filtre peut s’utiliser pour les articles, les rubriques, les brèves, les sites référencés et même les forums.

      Il retourne une booléenne qu’on peut utiliser pour choisir d’afficher ou non l’item dans le menu.

      Évidemment, cela implique de placer ce test dans tous les menus avant tout affichage.

      Mais cela devrait faire l’objet d’une autre contrib pour les détails.

    Répondre à ce message

  • 10

    Comment attribuer un code d’acces au visiteur ?
    Lorsque je crée un nouvel auteur, celui ci ne peut etre que administrateur ou redacteur.

    Comment peut on alors restreindre l’accès d’un article à un visiteur ?
    il y a qq chose qui m’échappe...

    • Bonne question ! Normalement, les personnes ayant un statut de visiteur sur ton site obtiendraient se statut si tu as autoriser dans la configuration de ton site l’option « Accepter l’inscription de visiteurs du site public ».

      Donc, tu pourrais limiter l’accès à certaines rubriques ou articles aux personnes ayant un login et un mot de passe.

      Maintenant, pour dire vrai, je n’utilise jamais le statut visiteur comme ça.
      Je crée dans l’interface privée des auteurs auxquels j’attribue le statut de visiteur.

      Mais, tu as raison. Il n’y a pas, normalement, ce choix dans la liste. Il faut faire une petite modification dans le coeur de SPIP. Modification que je fais sur tous les sites.

      J’aime bien avoir plus de possibilités que moins...

    • très interressant, et comment fait on pour ajouter un statut visiteur dans l’espace privé ?

      je n’ai pas trouvé de contrib à ce sujet.

    • Je suis aussi à la recherche d’infos permettant de réaliser ces modifs...
      Toute aide est bienvenue....

    • Pour les versions antérieur à 1.8.2, il faut modifier le coeur de SPIP. Mais depuis la version 1.8.2, si on va dans la page ecrire/config-contenu.php3. Dans la première boite « Mode de fonctionnement par défaut des forums publics » coche Enregistrement obligatoire (les utilisateurs doivent s’abonner en fournissant leur adresse e-mail avant de pouvoir poster des contributions).

      Et hop ! tu pourras attribuer à un auteur le statut de visiteur.
      Après avoir attribué à au moins un auteur le statut de visiteur, tu pourra toujours changer le « Mode de fonctionnement par défaut des forums publics » pour celui de ton choix.

      Maintenant que tu as un visiteur, le choix de créer un visiteur dans l’espace privée reste accessible.

      C’est ce qu’on appelle une option subtile ! ;-)

    • Je t’invite à voir la réponse que j’ai fais au message suivant.

    • Je t’invite à voir la réponse qui suit.

    • bonjour

      j’ai installé spip 1.8.1
      comment puis le je mettre à jour vers 1.8.2

    • bonjour

      j’ai installé spip 1.8.1 comment puis le je mettre à jour vers 1.8.2 ?

    • Je t’invite à lire dans la documentation en ligne l’article Effectuer une mise à jour. N’oublie pas de faire une sauvegarde avant ! ;-)

    • Sous SPIP 1.8.2e (et je ne sais pas depuis quand...), il suffit d’avoir un seul visiteur enregistré pour avoir la possibilité d’inscrire de nouveaux auteurs avec statut de visiteur.

      Donc, il suffit de :
      -  créer un article avec forum sur abonnement
      -  inscrire une adresse e-mail quelconque à ce forum
      -  supprimer ce forum (sinon « faille »...)

      Dès ce moment, SPIP 1.8.2e proposera « Admin, Rédac ET Visiteur » dans la liste des statuts. Je suppose que cela perdure tant qu’il existera au moins une personne avec ce statut.

      NB : les visiteurs peuvent d’ailleurs être listés « à part ».

    Répondre à ce message

  • 1

    Bonjour,

    Dans le cadre d’une variante (accès hierarchisé aux rubriques), j’ai des liens dans des articles appartenant à une rubrique protégée.

    Ces liens font référence à des documents (PDF par exemple) qui sont dans un répertoire APACHE protégé par mot de passe.

    Est-il possible de faire en sorte que l’identifiant et le mot de passe tapés sous spip permettent AUTOMATIQUEMENT d’accéder aux documents du répertoire apache protégé, cela sans avoir à retaper un identifiant et un mot de passe pour afficher le document PDF ?

    Merci par avance de vos réponses,

    Vincent

    • Là, je ne ne peux t’aider. Désolé ! Mais si quelqu’un a une solution, je suis aussi preneur.

    Répondre à ce message

  • 1

    C’est exactement ce que je recherche. J’ai par contre une question :

    Si un rédacteur à un login pour l’interface privée. Qu’est ce qui l’empêche de l’utiliser pour voir l’article ou la rubrique concernée via l’interface privée ?

    C’est important, car j’en ai besoin, j’ai des rubriques que pour les administrateurs.

    • Comme je l’explique de le message précédent, il faut faire certaines modifications dans le coeur de SPIP pour tester si la personne a le statut pour voir on non une rubrique ou un article. Mais, cela demandant de manipuler des fichiers dans le dossier ecrire, je ferai une autre contrib pour expliquer comment bientôt.

      C’est rien de bien compliqué à faire...

      À suivre !

    Répondre à ce message

Ajouter un commentaire

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

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

Merci d’avance pour les personnes qui vous aideront !

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

Qui êtes-vous ?
[Se connecter]

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

Ajoutez votre commentaire ici

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

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom