Tengo algunos permisos que me gustaría asignar a algunos roles mediante programación para facilitar la instalación.
Como estoy instalando el módulo y creando permisos y roles, no tengo los identificadores de roles, donde quiero establecer los permisos. Hasta ahora, solo he encontrado formas de asignar roles mediante programación que necesitan el ID de rol.
Me pregunto si de alguna manera podría buscar los roles con su nombre (cadena), recuperar el ID del rol y luego asignar permiso. Simplemente no se siente bien.
Respuestas:
El módulo de características hace esto bastante bien, permitiéndole exportar roles y permisos (y muchas otras cosas) de una sola vez:
http://drupal.org/project/features
Pero si desea lanzar su propia API de permisos, consulte:
http://drupal.org/project/permissions_api
fuente
Las características son bastante útiles para cosas como esta. Sin embargo, si necesita crear roles y agregar permisos mediante programación, no tiene que buscar la base de datos por su cuenta.
Cuando crea un nuevo rol de usuario con
user_role_save()
, actualizará el objeto que pasó con el nuevo ID de rol de usuario que se asignó. Puede ver un ejemplo de esto en lastandard_install()
función en el perfil de instalación estándar.Este ejemplo muestra que puede crear una nueva función de usuario y luego acceder a su
rid
propiedad, que fue completada poruser_role_save()
. También muestra cómo agregar permisos a ese rol conuser_role_grant_permissions()
. En este caso, está otorgando al rol de 'administrador' todos los permisos disponibles.Si necesita obtener la identificación de un rol de usuario creado por otra persona, puede usarlo
user_role_load_by_name()
para obtener el objeto para ese rol de usuario. Entonces simplemente agarras la identificación con$role->rid
.fuente
user_role_grant_permissions()
Me gustaría agregar un ejemplo de código que esté más cerca de la pregunta original sobre cómo asignar permisos a roles existentes mediante programación.
Puede buscar los roles con su nombre, recuperar el ID del rol y luego asignar permisos de la siguiente manera (por ejemplo, en una implementación de hook_update):
fuente