Roles y permisos de usuarios en Laravel 5

Roles y permisos de usuarios en Laravel 5
El manejo de roles y permisos de usuarios en Laravel 5 no puede ser más sencillo gracias a todas las herramientas que tenemos a nuestra disposición.

En este tutorial vamos a ver cómo podemos manejar los permisos de usuarios en Laravel 5.3 haciendo uso del package Shinobi, una herramienta sencilla y que cumple con todo lo que podamos necesitar.

Shinobi nos permite manejar los permisos y roles de usuarios a través de la base de datos con 5 tablas, veamos el diagrama.

permisos de usuarios en Laravel 5

Cómo podemos ver la estructura es clara y fácil de entender, vamos a detallar.

  • roles: Aquí guardamos todos los roles de nuestra aplicación.
  • role_user: Aquí relacionamos cada usuario con los roles que necesitemos.
  • permissions: Aquí definimos los permisos, por ejemplo name = Puede editar posts y slug = posts.edit.
  • permission_role: Aquí relacionamos los permisos con los roles y todo queda listo.

Instalar y configurar Shinobi en Laravel 5.3

Para instalar y configurar Shinobi lo primero que debemos hacer es abrir la terminal dentro de tu proyecto y ejecutar el siguiente comando.

Ahora añade a providers la siguiente línea.

Y a facades la siguiente.

Ahora vamos a abrir el archivo Kernel.php y añadimos lo siguiente a $routeMiddleware.

Finalmente vamos a generar las tablas y finalizar la configuración de Shinobi con los siguientes comandos, recuerda haber establecido la conexión con tu base de datos.

Permisos de usuarios en laravel 5 con blade

Shinobi nos ayuda a poder comprobar si el usuario actual puede o no acceder a determinadas zonas de nuestra aplicación, incluso dentro de las plantillas blade, veamos un ejemplo.

Gracias a $role y $can podemos comprobar en cada momento si un usuario puede o no acceder a determinados recursos de nuestra aplicación.

Permisos de usuarios en laravel 5 con Middlewares

Shinobi también nos provee 2 middlewares, vamos a ver un par de ejemplos de uso en el sistema de rutas de Laravel 5.

Cómo puedes ver, dentro de las rutas podemos utilizar los middlewares roleshinobi y permissionshinobi, incluso podemos pasarles en cada caso los parámetros que necesitemos, así también podemos tener controladas las rutas de forma sencilla.

Asignar, obtener y eliminar permisos

Algo que también va a ser necesario es poder manejar los permisos de nuestra aplicación, puede bien, para hacerlo simplemente debemos utilizar el modelo Role que nos ofrece Shinobi de la siguiente forma.

Comprobar si el usuario tiene un permiso

Si únicamente queremos saber si un usuario tiene permisos para poder realizar una acción, podemos utilizar el método can del modelo Role de la siguiente forma.

Comprobar si el usuario tiene al menos un permiso

Algo que puede ser tremendamente útil es saber si un usuario tiene al menos (at least) un permiso para saber si puede o no ejecutar una acción, pues eso lo podemos hacer de la siguiente forma.

Y eso es todo lo que podemos hacer con Shinobi, cómo puedes ver, tenemos una potente herramienta para manejar los roles y permisos de usuarios en Laravel 5, espero que te haya parecido interesante.

Si tienes dudas con el código anterior te recomiendo el curso de Laravel 5 de cursosdesarrolloweb.es, empieza de 0 y obtendrás todos los conocimientos necesarios para entender esta entrada sin ningún tipo de dudas.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR