Laravel 5.4 #20 : Roles y permisos (Parte 2)

Hoy vamos con la segunda parte de roles y permisos en Laravel. Lo que vamos a hacer es aplicar las restricciones según si el usuario logueado tiene el permiso o el rol necesario para hacer una acción determinada. Cambiaremos los Form Request, también algunas condiciones que hay en la vista de la lista de posts y también modificaremos la policy de los posts.

Primero de todo, vamos a la vista de la lista de posts ( posts.blade.php ) y modificamos el if que restringe el acceso al formulario de creación de posts y también modificamos el if que permite ver los botones de editar y eliminar los posts de la lista:

Como en mi caso, no quiero que cualquier usuario pueda acceder a crear un post simplemente los que tengan el permiso, restrinjo el acceso comprobando si el usuario logueado tiene el permiso post_create. Actualmente, serían todos los administradores, pero se puede crear otro rol (por ejemplo, escritores) y que tenga ese permiso y no otros que tendrían los administradores, es decir, un rol intermedio entre los administradores y los usuarios.

También quiero que los administradores puedan editar o eliminar un post, por tanto, lo pongo en la comprobación. Si el usuario logueado tiene asignado el rol de administrator, también podrá eliminar y editar cualquier post, no hará falta que sea el creador.

 

Ahora vamos a modificar la función authorize del Form Request PostRequest.php . Este archivo comprueba que tengas la autorización para poder crear o editar un post y también valida que los datos enviados sean correctos.

Simplemente, se comprueba que usuario logueado tenga el permiso post_create o post_edit.

 

Vamos a modificar la policy de los posts (PostPolicy.php):

Hemos creado un nuevo método create para comprobar que los usuarios tenga el permiso necesario a la hora de crear un post, como hemos hecho anteriormente con el formulario en la vista. También, se tiene que añadir la comprobación al método update y delete, esto es para que lo usuarios que no son los creadores del post pero que tienen los permisos pueden editar y eliminar el post.

Finalemente, para aplicar el nuevo método create tenemos que añadir esta línea, tal como hicimos en los otros métodos del controlador anteriormente:

 


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

2 comentarios en “Laravel 5.4 #20 : Roles y permisos (Parte 2)

  1. Solo tengo una duda, hice todos los pasos y no tengo ningun error pero ahora no me sale el formulario para crear los posts con ningun usuario, ya no puedo escribir publicaciones.

Deja una respuesta

  Acepto la política de privacidad