Download the PHP package jhonatanfdez/jhonatanpermisos without Composer
On this page you can find all versions of the php package jhonatanfdez/jhonatanpermisos. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download jhonatanfdez/jhonatanpermisos
More information about jhonatanfdez/jhonatanpermisos
Files in jhonatanfdez/jhonatanpermisos
Package jhonatanpermisos
Short Description Sistema de Roles y Permisos en Laravel 7
License MIT
Informations about the package jhonatanpermisos
Jhonatan Permisos
Es un paquete que nos ayudará al manejo de roles y permisos para laravel 7 de manera sencilla.
Crea tu mismo este paquete:
GRATIS EN YOUTUBE
Si quieres saber paso a paso como fuimos creando la estructura que usamos en este paquete, te recomendamos ir al siguiente enlace de Youtube Aquí
UNICAMENTE EN UDEMY
Si luego de tener la base de la creación de roles y permisos, te gustaría crear un paquete personalizado que se instalará en Laravel 7 con la ejecución del siguiente comando:
Te recomendamos que adquieras el curso en udemy donde convertimos el proyecto que hicimos gratis en youtube en un paquete.
Si te gustaría aprender como hacerlo, favor acceder Aquí
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/JhonatanPermisos.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 JhonatanPermissionInfoSeeder.php, exportado por el paquete en su instalación de laravel en la siguiente ruta: database/seeds/JhonatanPermissionInfoSeeder.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 JhonatanPermissionInfoSeeder
- 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:
Para mas información observar este video
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: JhonatanPermissionInfoSeeder.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:
- useroun.edit = editar su propio usuario
- useroun.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:
Para mas información observar este video
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
Le doy las gracias a Dios que me ayudó a crear este paquete para la comunidad. Dios les bendiga.
Licencia
MIT