J'ai des autorisations que j'aimerais attribuer à certains rôles par programmation pour une installation plus facile.
Étant donné que j'installe le module et que je crée à la fois des autorisations et des rôles, je n'ai pas d'ID de rôle, où je veux définir les autorisations. Jusqu'à présent, je n'ai trouvé que des moyens d' attribuer par programmation des rôles nécessitant l'ID de rôle.
Je me demande si je pourrais en quelque sorte rechercher les rôles avec leur nom (chaîne), récupérer l'ID de rôle puis attribuer une autorisation. Cela ne me semble pas juste.
Réponses:
Le module Fonctionnalités le fait très bien, vous permettant d'exporter des rôles et des autorisations (et beaucoup d'autres choses) d'un seul coup:
http://drupal.org/project/features
Mais si vous souhaitez lancer votre propre API d'autorisation d'extraction:
http://drupal.org/project/permissions_api
la source
Les fonctionnalités sont assez pratiques pour des trucs comme ça. Cependant, si vous devez créer des rôles et ajouter des autorisations par programme, vous n'avez pas besoin de fouiller dans la base de données par vous-même.
Lorsque vous créez un nouveau rôle d'utilisateur avec
user_role_save()
, il mettra à jour l'objet que vous avez transmis avec le nouvel ID de rôle d'utilisateur qui a été attribué. Vous pouvez en voir un exemple dans lastandard_install()
fonction du profil d'installation standard.Cet exemple montre que vous pouvez créer un nouveau rôle d'utilisateur, puis accéder à sa
rid
propriété, qui a été remplie paruser_role_save()
. Il montre également comment ajouter des autorisations à ce rôle avecuser_role_grant_permissions()
. Dans ce cas, il accorde au rôle «administrateur» toutes les autorisations disponibles.Si vous devez obtenir l'ID d'un rôle d'utilisateur créé par quelqu'un d'autre, vous pouvez utiliser
user_role_load_by_name()
pour obtenir l'objet pour ce rôle d'utilisateur. Ensuite, il vous suffit de saisir l'identifiant avec$role->rid
.la source
user_role_grant_permissions()
Je voudrais ajouter un exemple de code plus proche de la question d'origine sur la façon d'attribuer des autorisations aux rôles existants par programme.
Vous pouvez rechercher les rôles avec leur nom, récupérer l'ID de rôle, puis attribuer les autorisations comme suit (par exemple dans une implémentation hook_update):
la source