En la lección anterior, creamos un proyecto base con Laravel 5.1, con 2 tablas y modelos: users y posts.

En esta lección comenzaremos a aprender sobre el nuevo feature de autorización, cómo podemos definir una regla de acceso para su posterior aplicación en el código.

Repositorio

Mira el código de esta lección en GitHub: actual, resultadocomparación.

Notas

  • Por ahora podemos definir las reglas de acceso a través de un closure o función anónima dentro de un Service Provider, en este caso es el nuevo AuthServiceProvider que se encuentra entre los ServiceProvider de tu aplicación en el directorio App/Providers. Para definir las reglas de acceso usamos el método define de la siguiente manera:
    $gate->define('primer-argumento','segundo-argumento');

    donde el primer argumento es el nombre de la regla de acceso y el segundo argumento es donde se define  la lógica de la regla de acceso.

  • Para trabajar directamente con un usuario de la aplicación se usó un método de autentización de Laravel loginUsingId

Actividad

  • Define una nueva regla ‘delete-post’, los administradores podrán borrar cualquier post y los autores podrían borrar un post siempre que éste no esté con «status» publicado (Pista: deberás agregar una nueva columna status a posts). No olvides compartir tu código con nosotros en el canal #curso3.
Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

  • ¿Por qué Laravel no nos provee de reglas ya hechas y por el contrario hay que definirlas manualmente?
  • ¿Cuál es la responsabilidad del nuevo componente «Gate» comparado con otras formas de asegurar nuestra aplicación como los Middleware?

¿Te gustó esta lección? ¿Quieres completar éste y todos nuestros cursos? Únete a nuestra comunidad hoy mismo y adquiere una membresía

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Autorización y control de acceso (ACL) en Laravel 5.1: Primeros pasos Lección siguiente Creación de un listado de posts con paginación