Download the PHP package luisrolespermisos/luispermisos without Composer
On this page you can find all versions of the php package luisrolespermisos/luispermisos. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download luisrolespermisos/luispermisos
More information about luisrolespermisos/luispermisos
Files in luisrolespermisos/luispermisos
Package luispermisos
Short Description Sistema de Roles y Permisos en Laravel 7
License MIT
Informations about the package luispermisos
LuisPermisos
LuisPermisos es una librería de Laravel que proporciona roles y permisos e implementación con Gates y Policies.
Requisitos
El paquete de Laravel/ui debe estar instalado en Laravel para que funcione correctamente este paquete.
Instalación
Ejecute en el terminal el siguiente comando:
Uso del paquete
Una vez instalado el paquete en laravel 7, es recomendable utilizar el siguiente comando para exportar las migraciones, archivo seeder, vistas, políticas y mucho más:
Luego de haber ejecutado el comando anterior, vamos a revisar en la instalación de laravel el siguiente archivo config/LuisPermisos.php
En este, podremos cambiar las urls que vienen por defecto tanto para acceder a los roles como para los usuarios. Por otro lado, podremos también cambiar cual será el id del rol por defecto que se asignará cuando se registre un usuario. Si luego de realizar los cambios en el archivo de configuración, no se reflejan, entonces debe ejecutar el siguiente comando en el terminal:
Antes de ejecutar el comando
recomendamos realizar la siguiente configuración en el modelo User:
Debemos revisar el archivo seed LuisPermissionInfoSeeder.php, exportado por el paquete en su instalación de laravel en la siguiente ruta: database/seeds/LuisPermissionInfoSeeder.php, ya que, en este, encontrarás lo siguiente:
- La creación del usuario admin, con el correo [email protected]. El usuario es admin y la contraseña es: admin.
- Creación de dos roles: Rol Admin y Rol Autenticated User.
- Creación de la relación del rol Admin y el usuario admin.
- Creación de los permisos por defecto.
Un ejemplo de lo que encontrarás en el archivo antes mencionado para la creación de permisos es la siguiente:
Recomendamos crear los permisos adicionales que necesitas al final de este archivo con la misma estructura que la anterior.
Una vez tengas todos los permisos que necesitas, debes modificar el archivo DatabaseSeeder.php para cargar el seeder.
Adjunto un ejemplo de como debe quedar este archivo:
Ahora si podremos ejecutar el siguiente comando en el terminal
Una vez cargadas todas las tablas a tu base de datos con todos los permisos de lugar, ya podrás acceder a la url /role para acceder a los roles y /user para los usuarios.
Blindar los controladores con Gates y Políticas:
Gates:
Supongamos que tenemos:
- Permisos para los roles en el archivo LuisPermissionInfoSeeder
- Un modelo llamado: Role
- Un controlador llamado: RoleController
- Un archivo blade ubicado en views/role/index.blade.php
Y supongamos que quieres validar si un usuario tiene el siguiente permiso:
Para blindar (comprobar si tiene o no acceso un usuario a un método) con Gates cada método del controlador podemos hacerlo de dos formas:
-
Primera forma usando Gates:
- Segunda Forma usando \$this:
Políticas:
Supongamos que quieres realizar una comprobación para que un usuario pueda ver los registros que ha el ha creado. Te explicaremos como hacerlo con un ejemplo puntual que este paquete trae.
-
En el archivo seed: LuisPermissionInfoSeeder.php debemos agregar los permisos que queramos, y deben contemplar esta misma estructura, pero realmente lo mas importante es el slug de los permisos, porque es con este campo que vamos a hacer la validación si el usuario puede o no hacer una acción en el sistema, adjunto los permisos que aplican para este escenario.
-
Adjunto una muestra de como debe de realizarse la validación de la política en el controlador del usuario o en el que entendamos. En nuestro caso en el UserController, pondremos los métodos que aplica para los permisos puestos en la sección anterior:
// userown.edit = editar su propio usuario.
// userown.show = ver su propio usuario
- Para que lo anterior funcione correctamente, debemos de hacer algunos ajustes en el archivo app/Providers/AuthServiceProvider.php en nuestro caso vamos a observar este archivo ubicado en src/AuthServiceProvider.php.
En el ejemplo que tiene nuestro módulo, nosotros queremos implementar una politica al modelo User, y por ende, ustedes observarán que estamos usando App\User y App\Policies\UserPolicy.
En el método boot del archivo anterior, está el corazón del paquete y por ende, es necesiario que este código esté unicamente en este archivo y no en los archivos de Laravel.
Lo que hace este paquete es recibir dos parámetros uno para el usuario que está logueado actualmente y el permiso que se necesita.
- Vamos a verificar el archivo UserPolicy:
En el archivo anterior, encontraremos la forma correcta de como trabajar las políticas en este paquete, y lo que hace es lo siguiente:
- Recibe 3 parametros:
- El usuario actual que está logueado,
- El usuario que le estamos pasando en el cual queremos realizar la validación para saber si puede o no tener el acceso
- Los permisos de la sección 1 de las políticas.
Observemos detenidamente lo que hace el siguiente código:
Blindar en archivos Blade.
Supongamos que tenemos el siguiente permiso:
En blade nosotros podemos utilizar las directivas @can y @endcan para esto. Adjunto un ejemplo de su uso:
Como podemos observar, solo tenemos que escribir dos parametros:
- siempre debemos usar: haveaccess como primer parametro.
- el slug del permiso que queremos validar y si tiene acceso, lo mostrará y si no tiene acceso no lo mostrará.
Contribuciones
Dios les bendiga.
Licencia
MIT