Question

Drupal 6.x

J'ai ce module qui gère quatre différents types de contenu. Pour cette question, comment puis-je définir l'autorisation pour chaque contenu dans le même module? Est-ce que c'est possible? Je ne peux pas comprendre comment définir l'autorisation pour chaque type de contenu cuz hook_perm doit être nommé avec le nom du module et il n'a pas de argument (comme hook_access $ node) pour retourner la base de l'autorisation du type de contenu. Voici ce que je voudrais faire -

function mymodule_perm() 
{
if(content1)    
return array(
    'create content1 node',
    'edit content1 nodes',
    'delete content1 nodes',
);
if(content2)    
return array(
    'create content2 node',
    'edit content2 nodes',
    'delete content2 nodes',
);
if(content3)    
return array(
    'create content3 node',
    'edit content3 nodes',
    'delete content3 nodes',
);
.......
}

Toute aide serait très appréciée.

Était-ce utile?

La solution

Normalement, vous n'avez pas besoin de créer des autorisations pour vous-même, comme le module de nœud types de contenu fait pour vous dans node_perm() . Pour chaque type de contenu que vous déclarez dans hook_node_info() , le module de nœud crée automatiquement une structure fixe ensemble d'autorisations comme suit:

  $perms[] = 'create '. $name .' content';
  $perms[] = 'delete own '. $name .' content';
  $perms[] = 'delete any '. $name .' content';
  $perms[] = 'edit own '. $name .' content';
  $perms[] = 'edit any '. $name .' content';

En outre, vous pouvez déclarer un certain nombre d'autorisations supplémentaires dans votre module de mise en œuvre hook_perm() (tant qu'ils sont uniques) et les utiliser dans votre code que vous le souhaitez.

La chose importante ici est que l'autorisation ne fait pas beaucoup par lui-même - il est juste un nom qui apparaîtra sur la page des autorisations, ce qui lui permet d'être attribué à des rôles. Ils ne deviennent « significative » par le code qui utilise les appelle par user_access().

Donc, si, par exemple, que vous vouliez créer une spéciale, nouvelle autorisation pour chacun de vos types de contenu vous-même, vous auriez tout simplement les déclarer dans hook_perm() à la fois (si vous ne avez pas besoin aucun argument - il suffit de retourner une chaîne par l'autorisation que vous souhaitez créer).

Autres conseils

D'une manière générale, un module implantant plus d'un type de contenu renverra toutes les autorisations qu'il définit de hook_perm(); il n'y a pas moyen de savoir pour quel type de contenu Drupal demande les autorisations mises en œuvre.
Drupal demande toujours aux modules la liste de toutes les autorisations mises en œuvre, qui ne pourraient même être liés à des nœuds; il y a des modules qui mettent en œuvre des autorisations que pour leurs pages de réglage, par exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top