Laravel 10
  • Contenidos
  • Ejercicios 1
  • Ejercicios 2
  • Ejercicios 3
  • Ejercicios 4
  • Ejercicios 5
Con tecnología de GitBook
En esta página
  • Ejercicio 4.1 - Migración de la tabla usuarios
  • Ejercicio 4.2 - Seeder de usuarios
  • Ejercicio 4.3 - Sistema de autenticación
  • Ejercicio 4.4 - Añadir y editar películas

¿Te fue útil?

Ejercicios 4

En los ejercicios de esta sección vamos a completar el proyecto del videoclub terminando el procesamiento de los formularios y añadiendo el sistema de autenticación de usuarios.

Ejercicio 4.1 - Migración de la tabla usuarios

En primer lugar vamos a crear la tabla de la base de datos para almacenar los usuarios que tendrán acceso a la plataforma de gestión del videoclub.

Como hemos visto en la teoría, Laravel ya incluye una migración con el nombre create_users_table para la tabla users con todos los campos necesarios. Vamos a abrir esta migración y a comprobar que los campos incluidos coinciden con los de la siguiente tabla:

Campo

Tipo

Modificador

id

Autoincremental

name

String

email

String

unique

password

String

remember_token

Campo remember_token

timestamps

Timestamps de Eloquent

Comprueba también que en el método down de la migración se deshagan los cambios que se hacen en el método up, en este caso sería eliminar la tabla.

Por último ejecuta el comando de Artisan que añade las nuevas migraciones y comprueba con PHPMyAdmin que la tabla se ha creado correctamente con todos campos indicados.

Ejercicio 4.2 - Seeder de usuarios

Ahora vamos a proceder a rellenar la tabla users con los datos iniciales. Para esto edita el fichero de semillas situado en database/seeds/DatabaseSeeder.php y sigue los siguientes pasos:

  • Crea un método privado (dentro de la misma clase) llamado seedUsers() y llámalo desde el método run de la forma:

public function run() {
    // ... Llamada al seed del catálogo

    self::seedUsers();
    $this->command->info('Tabla usuarios inicializada con datos!');
}
  • Dentro del nuevo método seedUsers() realiza las siguientes acciones:

    • En primer lugar borra el contenido de la tabla users.

    • Y a continuación crea un par de usuarios de prueba. Recuerda que para guardar el password es necesario encriptarlo manualmente usando el método bcrypt (Revisa la sección "Registro de un usuario").

Por último ejecuta el comando de Artisan que procesa las semillas. Una vez realizado esto comprueba en PHPMyAdmin que se han añadido los usuarios a la tabla users.

Ejercicio 4.3 - Sistema de autenticación

En este ejercicio vamos a completar el sistema de autenticación. En primer lugar ejecuta los comandos necesarios para generar todas las rutas y vistas para el control de usuarios. Estos comandos te avisarán de que los ficheros "auth/login.blade.php" y "home.blade.php" ya existen. Indica que se reemplace la vista de login pero deja la vista home que ya teníamos.

A continuación edita el fichero routes/web.php y realiza las siguientes acciones:

  • Elimina (o comenta) las rutas de login y logout que habíamos añadido manualmente en los primeros ejercicios a fin de que se utilicen las nuevas rutas definidas por Laravel.

  • Añade un middleware de tipo grupo que aplique el filtro auth para proteger todas las rutas del catálogo (es decir, todas menos la ruta raíz / y las de autenticación).

  • Revisa mediante el comando de Artisan php artisan route:list las nuevas rutas y que el filtro auth se aplique correctamente.

Modifica el controlador LoginController para que cuando se realice el login te redirija a la ruta /catalog. Recuerda que para esto solo tienes que modificar su propiedad redirectTo (revisa el apartado "Autenticación de un usuario" de la teoría).

Modifica todas las vistas generadas por Laravel (carpeta resources/views/auth) para que en lugar de utilizar su layout utilice el que creamos en los primeros ejercicios (resources/views/layouts/master.blade.php).

A continuación edita la vista resources/views/partials/navbar.blade.php que habíamos copiado de las plantillas y cambia la línea @if( true || Auth::check() ) por @if( Auth::check() ). De esta forma el menú solo se mostrará cuando el usuario esté autenticado.

Por último vamos a arreglar la ruta raíz. Al generar la rutas y vistas mediante el comando de Artisan se habrá modificado el controlador HomeController y se habrá añadido una nueva ruta home. De momento vamos a dejar la ruta home pero modificaremos la ruta raíz / que teníamos para que apunte al mismo método del controlador: HomeController@index. Además modificaremos este método para que en lugar de devolver la vista home realice la siguiente redirección: return redirect()->action([CatalogController::class, 'getIndex']);

Comprueba que el sistema de autenticación funciona correctamente: no te permite entrar a la rutas protegidas si no estás autenticado, puedes acceder con los usuarios definidos en el fichero de semillas y funciona el botón de cerrar sesión.

Ejercicio 4.4 - Añadir y editar películas

En primer lugar vamos a añadir las rutas que nos van a hacer falta para recoger los datos al enviar los formularios. Para esto editamos el fichero de rutas y añadimos dos rutas (también protegidas por el filtro auth):

  • Una ruta de tipo POST para la url catalog/create que apunte al método postCreate del controlador CatalogController.

  • Y otra ruta tipo PUT para la url catalog/edit/{id} que apunte al método putEdit del controlador CatalogController.

A continuación vamos a modificar la vista catalog/edit.blade.php y realizar los siguientes cambios:

  • Revisar que el método de envío del formulario sea tipo PUT.

  • Tenemos que modificar todos los inputs para que como valor del campo ponga el valor correspondiente de la película. Por ejemplo, en el primer input tendríamos que añadir value="{{$pelicula->title}}". Realiza lo mismo para el resto de campos: year, director, poster y synopsis. El único campo distinto será el de synopsis, ya que el input es tipo textarea, en este caso el valor lo tendremos que poner directamente entre la etiqueta de apertura y la de cierre.

Por último tenemos que actualizar el controlador CatalogController con los dos nuevos métodos. En ambos casos tenemos que usar la inyección de dependencias para añadir la clase Request como parámetro de entrada (revisa la sección "Datos de entrada" de la teoría). Además para cada método haremos:

  • En el método postCreate creamos una nueva instancia del modelo Movie, asignamos el valor de todos los campos de entrada (title, year, director, poster y synopsis), y por último lo guardamos. Para el campo "rented" asigna por defecto el valor "false". Después de guardar, realiza una redirección a la ruta /catalog.

  • En el método putEdit buscamos la película con el identificador pasado por parámetro, actualizamos sus campos y los guardamos. En este caso dejaremos el valor del campo "rented" sin modificar. Por último realizamos una redirección a la pantalla con la vista detalle de la película editada.

Nota: de momento en caso de error no se mostrará nada.

AnteriorEjercicios 3SiguienteEjercicios 5

Última actualización hace 3 años

¿Te fue útil?