Système d’accès restreint aux articles

All contributions published for previous SPIP versions

Comment ne permettre la lecture de certains articles qu’aux personnes identifiées ?

Comment ne permettre la lecture de certains articles qu’aux personnes identifiées ?

Mais surtout laisser le choix au rédacteur de décider quel article sera réservé (privé) et quel article ne le sera pas (public) !!

Bonjour,

Une question redondante dans le forum et la liste SPIP : comment restreindre une partie du site aux seuls membres identifiés ou mettre en place une partie “privée” ??

Voici une approche qui m’a été inspirée par un filtre écrit par Emilien ARNAUD de chat-diffusion. Son filtre permettait de protéger un texte par un mot de passe.

J’essaie de faire la même chose à la différence que je veux protéger l’article.

-  Pré-requis :

Mise en place au préalable du système d’authentification (Login_public + Logout) associé à l’utilisation du statut membre des visiteur inscrits aux forums sur abonnement. Voir la doc de Spip

Voici le flitre :

function proteger($texte)
	{
	global $auteur_session;
	$p = strpos($texte, '§proteger§');	// rechercher §proteger§ dans $texte
	if (!$p)							// si pas trouvé alors (pas page protégée)
	return $texte;						// renvoyer $texte au complet C'EST FINI sinon la suite
	else
		{
		?>
		<script>alert(" 1 - <?php echo $auteur_session['statut'] ?>");</script>
		<?php															// alert pour moi, phase test
		if (!$auteur_session)
			{
		?>
		<script type="text/javascript">
		alert(" 2 - NO good - <?php echo $auteur_session['statut'] ?>");
		window.history.back();
		</script>
		<?php															// alert pour moi, phase test
			return $texte;
//			exit();
			}
		else
			{
		?>
		<script>alert(" 3 - GOOD ! - <?php echo $auteur_session['statut'] ?>");</script>
		<?php															// alert pour moi, phase test
			$t = ereg_replace("§proteger§", "", $texte);				// remplacer §proteger§ par le vide dans $texte
			return $t;
			}
		}
	}

Le rédacteur doit mettre dans le pavé CHAPEAU ce mot de passe : §proteger§

Bien sur ce mot peut être modifié, mais il faut le changer également dans la fonction.

Le filtre s’appelle dans le squelette ainsi :

(chapo

Le choix du chapeau est dû au fait que le texte à vérifier est normalement moins long.

-  Le problème :

Ca marche bien tant qu’on ne s’est pas authentifié. Mais une fois que l’on s’est authentifié, la protection ne marche plus.

C’est sûrement dû au cache mais je ne sais pas comment surmonter ce souci.

Si quelqu’un a une idée pour améliorer ou peut confirmer qu’on ne peut rien y faire, je suis preneur.

Cette approche permettrait d’éviter de bidouiller les différents squelettes (à vérifier) et surtout de permettre aux rédacteurs de choisir quel article ils veulent mettre en accès restreint.

@+

updated on 13 October 2005

Discussion

Une discussion

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom