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.

@+

Discussion

One discussion

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

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