Submitted by gagarine on
Bonjour,
Ca doit vraiment être une question basique... mais franchement j'ai cherché et j'ai 100000 résultat mais rien de ce que je veux.
C'est simple, j'aimerai savoir si l'utilisateur à le droit d'édition sur un node. Il faudrait que j'ai cette information dans le thème (fichier node.tpl.php). Ca me permettrait de désactiver le lien sur le titre du node si l'utilisateur ne peut pas l'éditer.
Dans l'idée:
<?php if ($page == 0) { ?>
<h2 class="title">
<?php if(nodeUseRight($node->uid,'edit')){?>
<a href="<?php print $node_url?>"><?php print $title?></a>
<?php }else{ ?>
<?php print $title?>
<?php };?>
</h2>
<?php }; ?>
Merci pour votre aide.
Salut, La réponse dépend
Permalien Soumis par drupalfrance le 27 Juillet, 2007 - 00:17
Salut,
La réponse dépend des permissions implémentées sur ton site et du type de noeud. Admettons qu'il s'agisse d'un noeud de type story et que l'utilisateur ne puisse voir le lien que s'il possède l'une des 2 permissions suivantes :
* edit story content
* edit own story content
Dans ce cas, le test est :
user_access() renvoie TRUE ou FALSE selon que le user en cours possède la permission passée en paramètre, ou pas. Tu peux utiliser n'importe laquelle des permissions (en anglais) définies dans Admin > Gestion des utilisateurs > Contrôle d'accès.
Merci Mais il n'est pas
Permalien Soumis par gagarine le 27 Juillet, 2007 - 01:04
Merci
Mais il n'est pas possible de partir du node et pas des permissions "global" de l'utilisateur? Genre j'envoie en paramètre à une hypothétique fonction l'utilisateur + le nodeid + la permission cible (edit, view) et la fonction nous renvois un boolean.
Ca permettrait de faire un code plus générique.
Ou alors ça ce fait aussi avec user_access() et j'en ai pas compris toute la subtilité....
Non non, tu as bien
Permalien Soumis par drupalfrance le 27 Juillet, 2007 - 08:41
Non non, tu as bien compris.
Vu ton besoin, il faut plutôt que tu regardes du côté de la fonction node_access($op, $node), qui renvoie TRUE si le user en cours a le droit d'effectuer une opération donnée sur un node donné.
Par exemple, écris :
pour savoir si le user en cours peut mettre à jour le noeud $mon_node.
1000 fois merci c'est
Permalien Soumis par gagarine le 27 Juillet, 2007 - 13:44
1000 fois merci c'est exactement ça que dont j'ai besoin :)
EDIT: et après essais ça fonctionne nickel :)
Afficher le lien sur le titre du node uniquement si l'utilisateur à le droit d'upate sur ce node (fichier node.tpl.php):
<?php if ($page == 0) { ?>
<h2 class="title">
<?php if(node_access('update', $node)){?>
<a href="<?php print $node_url?>"><?php print $title?></a>
<?php }else{ ?>
<?php print $title?>
<?php }; ?>
</h2>
<?php }; ?>