josemaria@valeria /var/www/html/prueba $ ls -la total 236 drwxr-xr-x 12 root www-data 4096 mar 9 19:31 . drwxr-xr-x 3 root www-data 4096 mar 9 18:29 .. drwxr-xrwx 6 root www-data 4096 ene 3 17:52 app -rwxr-xrwx 1 root www-data 1686 ene 3 17:52 artisan drwxr-xrwx 3 root www-data 4096 ene 3 17:52 bootstrap -rw-r--rw- 1 root www-data 1413 ene 3 17:52 composer.json -rw-r--rw- 1 root www-data 143565 mar 8 07:37 composer.lock drwxr-xrwx 2 root www-data 4096 ene 3 17:52 config drwxr-xrwx 5 root www-data 4096 ene 3 17:52 database -rw-r--r-- 1 root www-data 612 mar 9 19:31 .env -rw-r--r-- 1 root www-data 565 ene 3 17:52 .env.example -rw-r--r-- 1 root www-data 111 ene 3 17:52 .gitattributes -rw-r--r-- 1 root www-data 146 ene 3 17:52 .gitignore -rw-r--rw- 1 root www-data 1125 ene 3 17:52 package.json -rw-r--rw- 1 root www-data 1040 ene 3 17:52 phpunit.xml drwxr-xrwx 4 root www-data 4096 ene 3 17:52 public -rw-r--rw- 1 root www-data 3550 ene 3 17:52 readme.md drwxr-xrwx 5 root www-data 4096 ene 3 17:52 resources drwxr-xrwx 2 root www-data 4096 ene 3 17:52 routes -rw-r--rw- 1 root www-data 563 ene 3 17:52 server.php drwxrwxrwx 5 root www-data 4096 ene 3 17:52 storage drwxr-xrwx 4 root www-data 4096 ene 3 17:52 tests drwxr-xrwx 36 root www-data 4096 mar 8 07:38 vendor -rw-r--rw- 1 root www-data 549 ene 3 17:52 webpack.mix.js
El directorio public ejerce de DocumentRoot. Allí encontraremos el index.php que da entrada a nuestra aplicación web así como las hojas de estilos, etc. El fichero .env que vemos aquí arriba en el directorio raiz de nuestra aplicación es el fichero de configuración principal. De hecho, puesto que vamos a empezar a trabajar con bases de datos en este momento podemos aprovechar para editar las siguientes directivas:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel DB_PASSWORD=secreto
Importante: aunque usemos mariadb la directiva DB_CONNECTION debe de ser mysql porque Laravel no entiende otra y, a fin de cuentas, ambas son compatibles a nivel binario. Para que Laravel sea capaz de hacer uso de esa base de datos debemos de crearla. A ella y al usuario que le hemos dicho que va a usar para manejarla. Entramos en nuestro gestor (mysql o mariadb) y ejecutamos lo siguiente:
CREATE DATABASE laravel; CREATE USER laravel@localhost IDENTIFIED BY 'secreto'; GRANT ALL ON laravel.* TO laravel@localhost;
Vamos ahora a crear nuestro sistema de autenticación. Laravel viene ya con un módulo llamado User.php que reside en el directorio app. Para generar el resto de lo que necesitamos ejecutamos lo siguiente:
php artisan make:auth php artisan migrate
La primera línea crea el código y rutas necesario para la gestión de usuarios. En particular, creará o modificará los siguientes ficheros:
routes/web.php resources/views/auth/login.blade.php resources/views/auth/register.blade.php resources/views/auth/passwords/email.blade.php resources/views/auth/passwords/reset.blade.php
La segunda instrucción crea la estructura de tablas necesaria en la base de datos que hemos configurado previamente. Si ahora volvemos a cargar la web de nuestro aplicación veremos que en la esquina superior derecha tenemos dos nuevos enlaces correspondientes a las funcionalidades de Login y Registro:
Las pantallas de registro y login por defecto son estas:
Y una vez hecho login vemos que en la barra de menú se nos identifica con nuestro nombre de usuario y tenemos la posibilidad de cerrar sesión:
Si le echamos un vistazo a «las tripas» vemos que nos ha creado dos tablas una de las cuales, la de usuarios, es la que guardará la información relativa a los registros de usuarios.
Además, tal y como está mandado, vemos que no almacena las contraseñas en claro sino un hash de las mismas:
La castellanización de los recursos es tan sencilla como editar alguno de los ficheros php que hemos indicado anteriormente. Por ejemplo, el fichero login.blade.php es el que contiene la ventana de login y register.blade.php la de registro. Con muy poco esfuerzo tendremos las ventanas anteriores en perfecto castellano. Pero eso ya os lo dejo a vosotros 😉