¿Cómo puedo verificar si un usuario tiene un rol determinado?
Encontré esto pero es para Drupal 6.
Como ya encontraste esa publicación , asegúrate de leer también los comentarios. Explica claramente por qué se recomienda buscar un permiso en lugar de buscar un rol. Cuando usa permisos, puede asignar ese permiso a múltiples roles, lo que hace que su sistema sea más flexible. Además, recuerde que los roles se pueden renombrar, lo que rompería su código.
Dicho esto, si desea verificar un rol, puede hacer esto:
// Load the currently logged in user.
global $user;
// Check if the user has the 'editor' role.
if (in_array('editor', $user->roles)) {
// do fancy stuff
}
Para verificar si el usuario actual tiene un solo rol o alguno de los múltiples, una excelente manera es hacerlo:
fuente
Actualización para la versión de Drupal> = 7.36
Puede usar la función user_has_role de la API de Drupal https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_has_role/7 .
Prueba este ejemplo:
fuente
Puede instalar el módulo de desarrollo y hacer dpm ($ user). Esto imprimirá una matriz con toda la información del usuario, incluida la función del usuario.
Desde esta matriz puede encontrar la posición de la matriz de "roles" y usarla en su módulo para encontrar la función de usuario.
fuente
Para estar a prueba del futuro en caso de que cambie el nombre del rol, es mejor verificar el id del rol (rid) que se puede encontrar en la tabla de roles en la base de datos.
Si desea verificar un rol con rid 16, haga lo siguiente:
fuente
Aquí está el código real del comentario al que se hace referencia en la respuesta aceptada como la mejor práctica
fuente
Puede verificar el papel de un usuario mediante print_r ($ user) y en la salida obtendrá algo como esto
fuente
para verificar si un usuario tiene un rol determinado:
fuente
fuente
Las respuestas anteriores no funcionaron, no estoy seguro, encontré esta publicación y el código debería ser `
// Verifique si $ user tiene el rol de administrador. if (in_array ('administrador', array_values ($ user-> roles))) {// Haz algo. }?> `
fuente