Creando instagram (versión web) con laravel #4: Inicio de sesión, Registro.

Brandon
Laravel chile
Published in
4 min readApr 27, 2018

Este post será muy simple ya que lo que haremos viene incluido con laravel listo para ser configurado a nuestro modo (o no realizar ningún cambio y dejarlo como esta perfectamente funcional) el cual es el Inicio de sesión y el Registro de usuarios que en el caso de laravel son muy sencillos de lograr.

Primer paso

Ejecutar:

php artisan make:auth

Esto creara las vistas necesarias dentro de resources/views/auth, agregara una ruta Auth::routes() y una ruta hacia el controlador HomeController que también es creado automáticamente en app/Http/Controllers/.

Los controladores de estas rutas estan en app/Http/Controllers/Auth (controladores que ya venían con el proyecto).

Con esto ya esta tenemos un inicio de sesión, registro y recuperación de contraseña listos para usar.

1.- Inicio de sesión

Para probar el inicio de sesión de manera sencilla iremos a database/factories/UserFactory.php, donde esta definido lo que es un usuario falso que contiene el name, email, password y remember_token, debemos agregar de acuerdo al esquema del primer post las columnas username y bio. Quedando la factory modificada:

Seeder

Vamos a insertar solo un usuario en la base de datos y para esto debemos ir al archivo database/seeds/DatabaseSeeder.php, dentro encontraremos un método run() que normalmente llamada a otros seeders (un seeder para cada tabla de la base de datos), en este caso llamaremos al seeder de usuarios:

Este seeder todavia no esta creado, para ello ejecutamos:

php artisan make:seeder UsersTableSeeder

Creara una Seeder con un metodo run() vació donde debemos llamar a factory() al cual le pasamos el modelo User y la cantidad de usuarios de prueba que crearemos, finalmente para crearlo llamamos create():

luego para insertar al usuario:

php artisan db:seed

Esto creara un usuario en la base de datos llamando al DatabaseSeeder que a su ves llama a UsersTableSeeder el cual crea el usuario utilizando una factory.

Ahora que la base de datos tiene un usuario creado, lo usaremos para iniciar sesión, Para esto ve a la base de datos desde localhost/phpmyadmin o utilizando algún cliente para escritorio como heidisql (windows) o sequelpro (mac), o heidisql pero con wine en linux, ve a la tabla users y veras los datos del usuario recién creado solo copia el email y dirígete a: localhost/tu-proyecto/public/login o si prefieres el servidor incluido en php ejecutando:

php artisan serve --port 8000

El puerto es opcional y por defecto es 8000 pero cámbialo si lo estas usando para otra cosa.

Finalmente ingresa los datos en el formulario (recuerda la clave es: secret) y debería redirigirse a localhost:8000/home

2.- Registro

Primero debemos agregar un input para el username en el formulario ubicado en resources/views/auth/register.blade.php, abajo del form-group que contiene el nombre agregar otro form-group:

Lo segundo es ir al controlador RegisterController y en el método validator() y create() agregar el username a los arrays:

Después de haber hecho eso aun hay un problema, y es que si vas al formulario de registro en localhost:8000/register e ingresas los datos lanzara un error porque la columna bio no tiene un valor por defecto al insertarla en la base de datos ya que este dato no existe al momento de enviar el formulario. Para solucionar esto debemos crear una migración y poner un valor por defecto ya que la bio se pedirá después de registrado e iniciado sesión.

Antes de la migración debes instalar el siguiente paquete que es usado para crear las consultas sql que modifican las columnas de la base de datos:

composer require doctrine/dbal

Una vez instalado ejecutamos:

php artisan make:migration add_default_value_bio

Nos dirigimos al archivo recién creado database/migrations/XXXX_XX_XX_0000_add_default_value_bio.php (en tu caso saldrá la fecha de cuando creaste esa migración) para agregar el valor por defecto a la columna bio.

Migración columna bio

En el método up() definimos el cambio indicando la columna, el cambio en este caso llamando a nullable() que acepta un parámetro booleano para indicar que acepta nulos (por defecto es true) y cada vez que se registre un usuario por defecto los pondrá a NULL y en el down() volvemos a como teníamos la columna anterior a esta migración.

Ahora puedes ir al registro, una vez que ingresas los datos no te lanzara ningún error ya que la bio queda como NULL en la base de datos.

Por ahora no probaremos la recuperación de contraseña, pero se retomara mas adelante de todas formas.

Eso por hoy y en el siguiente post avanzaremos en el perfil de usuario y todo lo relacionado a la cuenta de usuario. Puedes dejar un comentario si hay algún error o algo no esta bien. :)

--

--