Curso de Laravel 5
Curso de Laravel 5
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!

Vamos a ver como podemos ingeniárnosla para crear un sistema para controlar el acceso a las secciones de nuestras páginas a través de roles de usuarios en laravel 4, para no complicar la cosa demasiado, simplemente tendremos una tabla users y crearemos un campo llamado role_id para comprobar el acceso.

He visto algunas librerías que utilizan una relación de muchos a muchos entre users y roles, pero la verdad que en nuestro caso no tiene ningún sentido, un usuario puede tener un sólo rol, pero un rol realmente puede pertenecer a muchos usuarios, así que nuestra forma va a ser completamente válida, más adelante crearemos otro ejemplo más completo con permisos, entonces si que será muy útil la tabla roles.

Nuestro control de acceso lo haremos a través de filtros, a los cuáles, con la ayuda de parámetros y de nuestro ingenio podemos decirle que controle cada sección de forma muy sencilla, y para que aún sea más completo, lo haremos utilizando grupo de rutas, pero bueno, creo que lo mejor es empezar a crear la lógica.

Aplicación con roles de usuarios en laravel 4

El que tenga dudas sobre la instalación de laravel 4, que pase por aquí, con esto podemos empezar por crear una base de datos llamada roles_users_laravel, y procedemos a hacer la migración para la tabla users.

Ahora abrimos la migración para la tabla users en app/database/migrations y colocamos el siguiente código.
Migración para la tabla users.

Ahora podemos ejecutar:

Y nuestra tabla users habrá sido creada.

El archivo app/filters.php

Aquí será donde creemos el filtro que se encargará de controlar las rutas de nuestra aplicación, así que lo abrimos y añadimos el siguiente código.

Sencilla pero efectiva, los dos primeros parámetros son necesarios a la hora de crear filtros que sean llamados antes de que la ruta sea procesada(before), si son para después(after), éstos deben llevar tres parámetros, siendo el tercero la respuesta.

Los nuestros son $roles y $redirect, para que entendamos esto, nosotros podemos pasar tantos parámetros como queramos a nuestros filtros, y éstos deben ir separados por una coma, entonces laravel lo que hace es utilizar explode para separar esos parámetros, pero claro, nosotros queremos pasar varios roles, por ejemplo, para la ruta suscriptor queremos que tenga acceso el admin, el editor y el suscriptor, entonces el valor de roles será 1-2-3, que serán los que queremos permitir, si los separamos por una coma, laravel pensará que tenemos 3 parámetros, y como no será cierto, nuestra aplicación fallará.

Así que nos creamos nuestra metodología y los separamos por un guión, laravel pensará que son el mismo parámetro, pero para nosotros serán tantos como queden cuando hagamos explode de roles por el -, de esta forma, si visitamos la ruta de suscriptor, roles tendría el siguiente aspecto tras hacer explode.

Ahora comprobamos si en el array existe nuestro role y actuamos en consecuencia.

El parámetro $redirect simplemente tendrá el nombre de la ruta a la que queramos redirigir en cada uno de los casos, así todo será más dinámico y sencillo.

Ahora nos queda ir al archivo routes y crear un nuevo usuario, así que abrimos el archivo y añadimos lo siguiente.

Ahora que ya tenemos un usuario, podemos crear las rutas para comprobar si se puede acceder gracias al filtro auth y a nuestro filtro roles, así que añadimos el siguiente código al final del archivo routes.

De esta forma tan sencilla podemos implementar roles de usuarios en laravel 4.

Y eso es todo, como vemos no es muy complicado, pero nos puede servir mucho para restringir el acceso a según que zonas de nuestra web y para ver como pasar parámetros de forma más eficaz a nuestros filtros. Más adelante intentaremos crear otro más avanzado con permisos de usuarios y que éstos puedan llevar a cabo acciones, espero que sea de ayuda, ahora te toca jugar y darle más funcionalidad.

El proyecto está alojado en mi repositorio de github.

Hemos hecho una sección de tutoriales premium, para poder acceder a cada uno de éstos debes suscribirte, el coste es de sólo 6 euros, con ésto tendrás acceso a todos los tutoriales durante un año. El dinero conseguido es para el mantenimiento del blog, así que si te está siendo de ayuda, suscribete y colabora.