Skip to content
This repository was archived by the owner on Jun 11, 2019. It is now read-only.

Usuarios y ACL

Jose Luis Fonseca edited this page Oct 24, 2015 · 3 revisions

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.

Administración de usuarios.

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.

Roles y permisos

Para la administración de roles y permisos se utiliza Entrust 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.

Creando Roles y 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([
        'display_name' => 'Administrador del sistema',
        'description' => 'Administrador general del sistema'
    ]);

Para el caso de permisos, puede usar el Modelo Modules\Users\Entities\Permission como se muestra a continuación.

$create = Permission::create([
        'name' => 'user-create',
        'display_name' => 'Crear Usuarios',
        'description' => 'Crea usuarios en el sistema',
        'module' => 'users'
    ]);

El índice module hace referencia al alias del módulo que se encuentra en module.json. verifique que sean iguales.

Asignando Permisos a un Rol

Una vez creamos el rol y los permisos, podremos asignar el permiso al rol usando el método attachPermissions del modelo Role como se muestra a continuación.

$admin->attachPermissions([$create]);

Re dirección después del login

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=/dashboard

Restringir URLs con el ACL

La 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.

Para mas métodos de restricción por favor visitar la documentación de Entrust

Verificar si un usuario o rol tiene permiso

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 Entrust nos provee con dicha funcionalidad. Usaremos el método can 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->can('update-role')){
    // 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->hasPermission('update-role'))
{
    // aca en true
}

Clone this wiki locally