Submitted by selinav on
Bonjour,
J'ai créé un petit module maison tout bête pour permettre à l'admin de modifier uniquement le titre d'un seul bloc.
Donc au début de mon module, je fais donc un hook_menu pour créer le chemin vers ma page qui contiendra mon form.
Mon problème c'est que je n'ai pas tout compris sur l'access callback.
Je souhaiterais que seul les utilisateurs qui ont un rôle "admin" puissent y accéder.
Dois je faire quelque chose dans ce style?
<?php
function titre_bloc_menu() {
$items['titre-bloc']=array(
'title' => 'Changer titre bloc promo',
'page callback' => 'titre_bloc_page',
'access callback' => 'ma_fonction_test_role',
);
return $items;
}
function ma_fonction_test_role() {
//recupere les roles de lutilisateur courant
//si ds mes roles j'ai le role admin alors return TRUE sinon return FALSE ?
?>
Merci de me dire si je suis dans la bonne direction
Le principe de l'access
Permalien Soumis par Yoran le 3 Février, 2010 - 15:35
Le principe de l'access callback c'est une fonction qui va renvoyer TRUE si l'accès est autorisé. Tu peux spécifier des paramètres à la callback par l'attribut "access argument", par exemple :
Dans ce cas, la callback est node_access qui prend deux arguments minimul, l'opération à vérifier sur le node (ici 'update', et le node sur lequel l'action doit porter (ici le %node, qui est au niveau 1 du chemin).
Par défaut, si l'attribut n'est pas spécifié, sa valeur est 'user_access', qui prend lui en argument une permission. Donc un moyen d'arriver à tes fins sans écrire une fonction est de ne pas spécifier access callback, mais de mettre un access arguments avec comme valeur array('access administration pages') qui généralement est l'apanage des administrateur.
merci pour cette réponse très
Permalien Soumis par selinav le 3 Février, 2010 - 16:15
merci pour cette réponse très complète qui m'éclaire énormément.
Pour ce qui est de la valeur par exemple 'access administration pages', comment puis-je connaître les autres valeurs des permissions que peut prendre acess arguments?
Finalement pour mon module, j'ai fait ceci, peut-on l'améliorer?