2011-03-08 31 views

Respuesta

23

Puede acceder a las funciones de usuario con sólo usar este PHP fragmento:

<?php $GLOBALS['user']->roles; ?> 
9

he encontrado una solución interesante para comprobar si hay múltiples roles de un usuario:

global $user; 
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles)); 
if (empty($check) ? FALSE : TRUE) { 
    // is admin 
} else { 
    // is not admin 
} 
24

$ usuario- > roles es una matriz de los roles que pertenecen al usuario codificado por el ID del rol, value es el rol del rol. Así que si quería comprobar si el usuario tenía papel 'autenticado el usuario' el fragmento de código sería algo como esto (no necesariamente el enfoque más optimizado, in_array es una función bastante rendimiento caro):

global $user; 

if (in_array('authenticated user', $user->roles)) { 
    //do stuff here 
} 

Tenga en cuenta que in_array también puede aceptar una matriz como la "aguja" (argumento n. ° 1) para que pueda verificar contra varias opciones de rol:

in_array(array('authenticated user', 'anonymous user'), $user->roles); 
+0

gracias a su respuesta fue útil para mí. gracias. – zhilevan

+4

En el segundo snippit de aguja "en forma de conjunto", [según los documentos] (http://php.net/manual/en/function.in-array.php) y un fragmento de código de prueba rápido, está preguntando 'in_array' para verificar si '$ user-> roles' contiene una matriz de' array ('usuario autenticado', 'usuario anónimo') ', no los elementos individuales' 'usuario autenticado' o '' usuario anónimo ' . [array_intersect()] (http://php.net/manual/en/function.array-intersect.php) haría el truco para eso. –

1

// Cargue el usuario que está actualmente conectado.

global $user; 
print_r($user->roles);//this gives you current user roles 

// para comprobar si es administrador, puede hacerlo mediante

if (in_array('administrator', $user->roles)) { 
      // do some stuff 
      $form['field_end_date']['#disabled'] = FALSE; 
    } 
Cuestiones relacionadas