Comprobar permisos y roles de usuarios en Twig con Drupal

Pohibido el acceso con vaya y cadenas

Cuando estamos desarrollando webs o aplicaciones en Drupal es habitual tener que comprobar permisos y en los templates puede ser un poco confuso ya que es complicado ver todo de lo que disponemos y también que podemos utilizar ya que está limitado por seguridad. 

Pero esto es Drupal, y siempre tenemos alguna ayuda u opción que nos facilita cualquier tarea, y como no puede ser de otra manera, también disponemos de una funcionalidad en Twig para poder comprobar los permisos o los roles del usuario actual. 

Realmente es muy sencillo y podemos hacerlo con apenas una línea, y es que Drupal añade el usuario actual a absolutamente todos los templates. Con el usuario disponible ya nos ahorra trabajo de tener que obtener el usuario actual y añadirlo con los preprocesados a donde lo necesitemos. 

Como comprobar los permisos 

Podemos hacerlo de la siguiente manera en una sola línea de código, y es que al tener el usuario actual dispone de un método llamado “hasPermission()” al cual podemos llamar desde Twig: 

{% if user.haspermission(‘access content’) %}

<p>{{ variable }}</p> 

{% endif %}

Y listo, de esa manera podemos comprobar si el usuario tiene el permiso “access content”, siempre podemos reemplazar el permiso del ejemplo por el que queramos. 

Obtener los roles 

De la misma manera que hay un método para comprobar los permisos, también disponemos de uno para obtener los roles en un array y después comprobar si el rol que queremos está incluido, el metodo en concreto se llama “getRoles()”. 

{% set roles = user.getroles() %}

{% if 'authenticated' in user.getroles()  %}
  <p>El usuario tiene el rol "authenticated"</p>
{% endif %}

Y listo, en la primera línea obtenemos los roles y los almacenamos en un array. En la segunda obtenemos los roles y directamente comprobamos en el if si el usuario dispone del rol “authenticated” y entonces mostramos un mensaje. 

Y no hay más que comentar, esto es todo, realmente es muy sencillo si conocemos ambos métodos. Lo correcto debería ser comprobar el permiso y no el rol, pero ambas opciones están disponibles. 

Comparte este artículo:
Publicado por Borja
Image

Me metí en la aventura de Drupal con la versión 6, y aquí estoy, 10 años después, escribiendo articulos y haciendo videos sobre Drupal, quien me lo iba a decir. Aunque he probado otros framworks y cms, me quedo con Drupal de lejos, pero Symfony y Django estan entre mis favoritos. Aficionado a la montaña, la bicicleta, y el comer, de eso que no falte.