Instalar y crear proyecto con Laravel | Programador web freelance Barcelona - tuwebfreelance

En este artículo vamos a aprender a crear un sistema de autentificación con su respectivo login, formulario de registro y formulario para recuperar la contraseña en caso que el usuario la haya olvidado.

Para todo ello, vamos a necesitar tener Laravel corriendo en nuestro proyecto, por lo que si no habéis leído el artículo anterior, os dejo aquí el link de cómo crear nuestro primer proyecto con Laravel.

CONFIGURAR CONEXIÓN A LA BASE DE DATOS

Para ello, vamos a abrir nuestro proyecto Laravel i ir al fichero que se llama “.env” situado en la raíz de nuestro proyecto.

Veréis que en este fichero tenemos las siguientes líneas de código:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombre_base_datos
DB_USERNAME=nombre_usuario
DB_PASSWORD=password_usuario

Las líneas de DB_CONNECTION, DB_HOST y DB_PORT, tal y como están por defecto nos sirven, no debemos modificarlas.

Las otras tres, en DB_DATABASE debemos indicar el nombre de la base de datos que hayamos creado en nuestro entorno local creado con MAMP o XAMPP por ejemplo.

EN DB_USERNAME debemos indicar el nombre de usuario con el que haremos la conexión a la base de datos, generalmente, tendréis un usuario root y sino, el usuario que hayáis creado.

EN DB_PASSWORD tenéis que indicar la contraseña que se haya asignado al usuario en cuestión.

CREACIÓN DE MODELOS, CONTROLADORES Y VISTAS NECESARIAS

Laravel ha desarrollado un comando que nos permite, mediante artisan, crear automáticamente todo lo necesario para conseguir tener un sistema de autentificación corriendo en nuestro entorno Laravel.

Para ello, vamos a necesitar entrar por consola a la carpeta de nuestro proyecto y ejecutar el siguiente comando:

php artisan make:auth

Una vez termine de ejecutarse este comando, veréis que se han generado los modelos, los controladores y las vistas para el correcto funcionamiento de dicha autentificación.

Si ahora entráis en el navegador y accedéis a la raíz de vuestro proyecto, veréis que os ha aparecido un menú con los links a “Login” y “Register”.

Estos links llaman a sus respectivos controladores y estos os mandan a las vistas “login.blade.php” o bien a “register.blade.php”.

Ahora mismo tenemos los ficheros necesarios para poder hacer login, pero tenemos un problema. No tenemos ninguna tabla creada en nuestra base de datos.

Para crear las tablas en la base de datos, solo necesitamos ejecutar otro comando:

php artisan migrate

Este comando, lo que hace, es ir a la carpeta “database” > “migrations” y leer los archivos allí creados.

Esos archivos, si por ejemplo abrimos el que tiene por nombre “create_users_table”, veremos que dentro de este fichero tenemos una función “up()” que contiene la estructura de la tabla en cuestión y otra función “down()” que solo se ejecuta en caso de querer eliminar la tabla en caso que exista.

De esta manera, si a mitad de un proyecto, nuestras tablas se modifican, no vamos a modificar la base de datos sino que vamos a modificar este fichero y a ejecutar el comando especificado anteriormente para que la base de datos se actualice.

Es probable que al ejecutar este comando, os salte el siguiente error:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Este error es propio de Laravel. Para resolverlo, tenéis que abrir el fichero “AppServiceProvider.php” que se encuentra en la carpeta “App” > “Providers”.

En la función “boot()” añadiremos la siguiente línea:

Schema::defaultStringLength(191);

Para que no nos de error, deberemos llamar a la clase “Schema” de manera que en la parte superior, vamos a escribir esto:

use Illuminate\Support\Facades\Schema;

Una vez tengamos esto listo, volved a ejecutar el comando “php artisan migrate” y veréis como en vuestra base de datos se han creado 3 tablas.

La tabla users y la tabla password_resets se encargaran del registro y autentificación de usuarios mientras que la otras tabla que se generará, con nombre “migrations” va a almacenar un histórico de migraciones ejecutadas para que Laravel sepa cual es vuestra última migración ejecutada.

Si en algun momento necesitáis borrar la base de datos, solo tenéis que ejecutar:

php artisan migrate:rollback

Una vez echo todo esto, podréis ver como el formulario de registro funciona a la perfección y que posteriormente el formulario del Login comprueba y valida que el usuario exista.

___________

Próximamente veremos como gestionar las validaciones de formularios como es por ejemplo el password de este caso, si quisiéramos que tuviera mayúsculas, algún signo raro como por ejemplo “@” e otros casos.