Que son los Policies
Comprar curso

173. Que son los Policies

En Laravel, los Policies son una forma de definir la lógica de acceso a modelos y recursos específicos de tu aplicación. En este capítulo, aprenderás cómo utilizar los Policies en Laravel. Verás cómo definir una política, cómo aplicarla a un modelo y cómo utilizarla para controlar el acceso a los recursos.


2 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    En Laravel, los Policies son una característica clave para definir la lógica de acceso a modelos y recursos específicos de tu aplicación. En este capítulo, aprenderás cómo utilizar los Policies en Laravel y cómo aplicarlos para controlar el acceso a los recursos.

    Para definir una política en Laravel, debes crear una clase de política que se asocie con un modelo específico. En esta clase de política, puedes definir los métodos para controlar el acceso a los recursos, como crear, ver, actualizar y eliminar.

    Una vez que has definido tu política, debes registrarla en el proveedor de servicios de políticas de Laravel y luego asociarla con el modelo correspondiente. Luego, puedes utilizar los métodos de la política para controlar el acceso a los recursos, como comprobar si un usuario tiene permiso para crear o actualizar un modelo.

    Además, puedes personalizar la respuesta cuando se deniega el acceso a un recurso utilizando el método "authorize" en el controlador. Este método toma el nombre de la política y el modelo correspondiente como argumentos, y puede personalizar la respuesta cuando un usuario no tiene acceso.

    En resumen, los Policies son una herramienta esencial para controlar el acceso a los recursos en Laravel. Al aprender cómo definir y utilizar las políticas, puedes agregar una capa adicional de seguridad y personalización a tu aplicación Laravel. Asegúrate de aprovechar al máximo esta funcionalidad en tu proyecto y proteger adecuadamente tus recursos contra el acceso no autorizado.

  • Juan Carlos Lopez

    Juan Carlos Lopez hace 3 meses

    En el archivo BookPolicy tengo este código

        public function delete(User $user, Book $book): bool

        {

            return $book->user_id == auth()->id() || $user->nivel == 5;

        }


     

        /**

         * Determine whether the user can restore the model.

         */

        public function restore(User $user, $id): bool

        {

            return true;

            /* $book = Book::withTrashed()->find($id);

            return $book->user_id == auth()->id() || $user->nivel == 5; */

        }

    y en el BookController, este otro

        public function destroy(Book $book)

        {

            Gate::authorize('delete',$book);

            $book->delete();

            return redirect()->route('books.index');

        }


     

        public function restore($id)

        {

            Gate::authorize('restore',$id);

            $book = Book::withTrashed()->find($id);

            $book->restore();

            return redirect()->route('panel');

        }

    Para el metodo destroy si que me funciona, pero para el restore no me funciona aun poniendo el return true; y comentando el bloque que quiero que se ejecute. No se que tengo que hacer para que lea la policy ya que entiendo que no se ejecuta. Me da siempre el error 403 esta acción no esta autorizada.

    • Juan Carlos Lopez hace 3 meses

      He modificado un poco el código del controller y ya funciona.

          public function restore($id)

          {

              $book = Book::withTrashed()->find($id);

              Gate::authorize('restore',$book);

              $book->restore();

              return redirect()->route('panel');

          }

      Primero recojo el objeta antes del gate.