Laravel: Restricciones de Acceso

Se hablara sobre las Restricciones de Acceso y su gran utilidad a la hora de controlar el flujo de usuarios que pueden ver determinado tema

Restricciones de Acceso

Aveces necesitamos que determinada hoja sea vista únicamente por un determinado usuario, para ello, podemos aplicar restricciones de acceso.

  1. Ingresamos en: Providers → AuthServiceProvider.php
  2. Creamos toda nuestra lógica dentro de la función boot

Instanciamos la variable $gate y usamos define para definir las reglas que tiene que cumplir. Como primer parámetro le decis el nombre de la regla y como segundo parámetro le pasamos una función en donde compara el id del usuario conectado con el id del creador del post, devolviendo un True o False según corresponda.

Otro ejemplo sería para un panelAdmin donde devolvemos true únicamente si el usuario conectado es del rol Administrador

  1. Luego nos vamos a nuestra hoja de rutas y creamos la ruta en cuestión

Cosas a tener en cuenta: Al crear la variable $post lo que le estoy diciendo es que busque en la tabla Post de la Base de Datos una fila donde el id sea el mismo que yo ingrese y que en caso de no encontrarlo nos arroje un error. Seguidamente llamó a nuestra restricción con la propiedad “denies” es decir, que si el usuario tiene el acceso restringido nos retorne a la vista de inicio.

NOTA: Si observan en el gate pedimos dos parámetros, post y user, pero en la ruta solo le enviamos el post, esto es porque laravel inyecta el usuario por nosotros, por lo que no es necesario enviarlo.

Restricción de Vista en la Plantilla

Supongamos que tenemos una lista de post creados y queremos que solamente el autor del post pueda tener acceso al boton de editar, bueno, tendríamos que hacer algo tan sencillo como esto en la plantilla de blade:

Utilizando las abreviaturas de @can y de @cannot pasando como parámetros el nombre del gate que usamos para crear la regla de acceso y en caso de que lo cumpla nos mostrará lo que entra dentro de @can @endcan