Faire afficher 1 objet en fonction des droits utilisateurs

Vous devez être connecté pour utiliser le forum. Vous pouvez le faire ici.

Auteur Message

Claire Spaenlein

Vendredi 16 Mars 2007 4:51:58 pm

Faire afficher 1 objet en fonction des droits utilisateurs

Bonjour,

Je recherche le code ez permettant de faire afficher le bouton "publier" (donnant accès à un formulaire) en fonction des droits de l'utilisateur courant. Je m'explique : à l'heure actuelle, sur mon site, A, B et C voient tous le bouton "publier" donnant accès au formulaire de création d'articles en ligne. Or seul A a le droit de créer et publier des articles dans la section concernée (B et C se voient l'accès refusé quand ils cliquent sur "publier". Pour plus de cohérence, j'aimerais que B et C ne puissent pas voir le bouton "publier". Pouvez-vous me prêter main forte pour écrire le template correspondant (si l'utilisateur courant a le droit de créer et publier un article dans la section S, alors afficher le bouton "publier", sinon, ne rien afficher)?
Merci d'avance pour votre aide

Claire S.

Sylvain Guittard

Vendredi 16 Mars 2007 11:13:24 pm

Re: Faire afficher 1 objet en fonction des droits utilisateurs

Bonjour Claire,

Une petite remarque préalable: je trouve étonnant que tes utilisateurs voient un bouton "Publier". Je ne sais pas quelle version tu utilises, mais si j'ai bien compris ton bouton "Publier" sert à la création d'article.

En fait, tu as 3 utilisateurs: A peut créer des articles, B et C ne peuvent pas en créer.

1) Définir les droits:
-Créer 3 rôles différents.
-Mettre dans le rôle A, la politique content/create/article, content/edit/article. Tu peux définir des restrictions supplémentaires si tu ne veux pas que A puisse publier partout.

2) Surcharger le template pour la classe FOLDER:
Généralement, les articles se situent en dessous des rubriques. Il faut donc surcharger le template node/view/full pour la classe "folder".
Reprendre le code du template précédent (celui de la rubrique), et ajouter le code suivant:

{* Authorisation création ? *}
	{section show=count($node.object.can_create_class_list)}
	<form method="post" action={"/content/action"|ezurl}>
	<input type="hidden" name="NodeID" value="{$node.node_id}" />
	<select name="ClassID">
		{section var=class loop=$node.object.can_create_class_list}
		<option value="{$class.id}">{$class.name|wash}</option>
		{/section}
        </select>
	<input type="submit" name="NewButton" value="{'Create here'|i18n('design/standard/node/view')}" />
	</form>
	{section-else}
	Pour ajouter un article, <a href={"/user/login"|ezurl()}>identifiez-vous </a>
	{/section}


3) Surcharger le template pour la classe ARTICLE
Je pense qu'il faut aussi permettre à A de pouvoir modifier son article après publication. Pour cela, il faut surcharger le template node/view/full pour la classe "article".
Reprendre le code du template précédent (celui de l'article) et ajouter le code:
{* Authorisation modification ? *}
		{section show=$node.object.can_edit}
		<form method="get" action={concat("/content/edit/", $node.object.id)|ezurl}>
        	<input class="button" type="submit" name="EditButton" value="{'Edit'|i18n('design/standard/node/view')}" />
 			<input type="hidden" name="ContentNodeID" value="{$node.node_id}" />
                        <input type="hidden" name="ContentObjectID" value="{$node.object.id}" />
                        <input type="hidden" name="ViewMode" value="full" />
		</form>
		{/section}


Voila.

En espérant que cela puisse t'aider.

Bon courage,
Sylvain

Claire Spaenlein

Vendredi 23 Mars 2007 4:18:20 pm

Re: Faire afficher 1 objet en fonction des droits utilisateurs

Merci pour tout, cela fonctionne parfaitement!!
Pour info, j'utilise la version 3.8.6, et le bouton "publier" sert effectivment à la création d'articles.

Claire S.

eZ publish™ copyright © 1999-2008 eZ systems as