-
Notifications
You must be signed in to change notification settings - Fork 4
Usuarios y ACL
Jarvis Platform viene con un módulo de usuarios que implementa el sistema de autenticación nativo de Laravel, este módulo viene en el core y es responsable de la administración de usuarios, permisos, roles y ACL.
En el menú, encontrará un enlace que le mostrará el listado de usuarios, acá puede buscar usuarios, editar su información, cambiar su rol o foto de perfil.
Para la administración de roles y permisos se utiliza Laravel Permission el cual nos da varias posibilidades para proteger secciones de la aplicación. Por defecto se crea un rol de administrador quien tiene acceso a todo el módulo de usuarios y sus acciones.
Puede administrar roles y permisos usando la opción de configuración/roles y permisos. podrá crear roles y administrar sus permisos.
Como parte del proceso de instalación de su módulo, puede tener la necesidad de crear tanto roles como permisos relevantes para su módulo. Para esto puede usar el Modelo Modules\Users\Entities\Role que hace parte del módulo de usuarios como se muestra a continuación.
use Modules\Users\Entities\Role;
$admin = Role::create([
'name' => 'Administrador del sistema'
'module' => 'users'
]);Para el caso de permisos, puede usar el Modelo Modules\Users\Entities\Permission como se muestra a continuación.
$create = Permission::create([
'name' => 'Listar usuarios',
'module' => 'users'
]);El índice module hace referencia al alias del módulo que se encuentra en module.json. verifique que sean iguales.
Una vez creamos el rol y los permisos, podremos asignar el permiso al rol usando el método givePermissionTo del modelo Role como se muestra a continuación.
$admin->givePermissionTo([$create]);Una vez se hace el login, el módulo buscará en la variable ambiente el URI donde debe re direccionar. Si desea cambiar el URI por defecto que es dashboard cambie el valor de URI_AFTER_LOGIN en su archivo .env como se muestra a continuación.
URI_AFTER_LOGIN=/dashboardLa gran mayoría de las veces, deseamos bloquear la vista de una ruta basado en el permiso que tenga o no el usuario o su rol, para eso podemos hacerlo usando el middleware acl de la siguiente forma:
'middleware' => ['acl:permission1,permission2']El parámetro es el permiso que se necesita para acceder a la ruta, puede definir varios permisos separándolos con coma (,), si alguno de ellos no se cumple se abortará con un status 403.
En varias de las interfaces necesitaremos verificar si un usuario tiene o no un permiso, para eso el modelo de User usa el trait que Laravel Permission nos provee con dicha funcionalidad. Usaremos el método can o hasPermissionTo para verificar que el usuario tiene un permiso, este método retorna un true si lo tiene y un false si no. Mire el siguiente ejemplo
$user = Auth::user();
if($user->hasPermissionTo('Listar Usuarios')){
// aca es true
}Para verificar lo mismo pero sobre un rol, puede usar el modelo del Modules\Users\Entities\Role y verificar con el método hasPermission de la siguiente manera.
$role = \Modules\Users\Entities\Role::find($id);
if($role->hasPermissionTo('Listar Usuarios'))
{
// aca en true
}Si va al menu configuraciones y abre el link de usuarios, verá que se abre la ventana de configuración del módulo usuarios, en este encontrará una sección para agregar, editar, eliminar los campos del perfil del usuario. A medida que se agreguen tipos de campo al core, estos estarán disponibles para su uso acá.