Políticas de acceso en Laravel 5.4 – Features del Framework

Las políticas de acceso te permitirán de una manera increíblemente fácil, limitar y bloquear el acceso a ciertas partes de la aplicación. Cuando programamos, parte de lo que realmente queremos, es que los métodos de nuestros controladores no sean mayores a las veinte (20) líneas y esto lo logramos aislando fragmentos de código en otros archivos, como por ejemplo validaciones, consultas, políticas y así.

Vamos a aprender en este tutorial cómo aislar el bloque de código respecto a las políticas de acceso.

¿Cuando usamos este feature?

Ejemplo: Un usuario ha creado los artículos con ID 1, 2 y 3, otro usuario ha creado los artículos con ID 4 y 5, entonces crearíamos una política de acceso para que cada usuario solo pueda editar y borrar sus artículos y no los de otro usuario.

Comencemos

Instala un proyecto “comencemos desde cero con un proyecto en blanco”, hazlo y vuelve para que a continuación creemos las tablas y así paso a paso cada archivo necesario para comprender completamente este feature.

Lo primero son las migraciones

Vamos a crear la migración POST php artisan make:model Post --migration  con este comando creamos el modelo y la migración de ese modelo, la de usuarios no la ejecutamos porque ya viene instalada en Laravel 🙂

Clase CreateUsersTable método up()

Clase CreatePostsTable método up()

Lo que sigue es tener datos para hacer pruebas (datos falsos o de semilla), para ello configuramos los seeds y factory.

Los seeders se crean con el siguiente comando, ejecuta ambos
php artisan make:seeder UserTableSeeder
php artisan make:seeder PostTableSeeder

Rimorsoft/database/seeds/UsersTableSeeder.php

Rimorsoft/database/seeds/PostsTableSeeder.php

Rimorsoft/database/factories/ModelFactory.php

Esto ya lo sabías 🙂 lo siguiente que debes hacer ahora es configurar los datos de la base de datos en el archivo .env  y ejecutar el comando php artisan migrate:refresh --seed

Ejemplo del archivo .env

¿Creamos la política de acceso?

A eso viniste, así que manos a la obra. Ejecuta el siguiente comando para crear el archivo de políticas de acceso. php artisan make:policy PostPolicy Recuerda que la idea es aislar y crear la lógica correspondiente.

Esto crea una carpeta y dentro el archivo correspondiente a la política de acceso

Rimorsoft/app/Policies/PostPolicy.php

Viene la parte donde damos de alta o hacemos saber que estos archivos existen, esto se hace dentro del ServiceProvider Rimorsoft/app/Providers/AuthServiceProvider.php

Esta es la configuración necesaria para hacer uso de las políticas de acceso, ahora lo que debemos hacer es el llamado de esta configuración donde queremos aplicarlo 🙂 vamos con el código, nota que vamos a configurar los métodos edit y destroy.

Como puedes observar, usamos esta línea de código $this->authorize('pass', $post);  donde pass es el método (y puede llevar cualquier nombre) en el archivo de políticas y $post representa a la entidad.

Lo que nadie te dice es que debes crear una vista llamada 403.blade.php  dentro de la carpeta errors, y cuando esta condición no se cumpla el sistema mostrará esta vista, donde curiosamente siempre escribo “PARECE QUE HACES TRAMPA… XD”

Con esto podemos concluir

Las políticas de acceso de tu sistema forman parte de la lógica natural; lógica que debemos hacer según la necesidad real, sin embargo, hay cosas comunes como el ejemplo planteado en este tutorial, entonces, en esos casos ¿por qué no hacerlo usando las políticas de acceso de Laravel? ademas nos ayuda con el orden y buenas practicas.

¿Qué te pareció? Haz la practica y coméntame como te fue con eso.

Comparte este artículo

Entra en la discusión y deja tu comentario

Veces