miércoles, 8 de abril de 2020

Autenticación personalizada en Laravel

Cómo hacer un sistema de autenticación personalizado en Laravel 5.6

La  autenticación es el proceso por el cual se comprueba si el usuario es quien dice ser: a través de una dirección email y una contraseña, por ejemplo.
Necesitas hacer un sistema de autenticación personalizado en Laravel?, es decir, crear tu propio controlador y tus propias rutas?, vamos a ello!.
En la documentación oficial de Laravel tienes acceso a toda esta información que te traigo.
Y si es tan fácil el sistema de autenticación de Laravel para que voy a necesitar personalizarlo?!; pues por ejemplo, porque necesitas dividir la aplicación para el administrador y necesitas crear una zona para el administrador.
No es necesario que uses sí o sí los controladores de autenticación que trae Laravel por defecto.
Vamos a ello!, step by step!.

1- Crear tabla Users y crear Seed con información

Bueno, lo primero que vamos a hacer es crear la tabla users el nombre users es obligatorio porque sino no podremos usar la clase Auth ni el modelo User.
Y para ello vamos a hacer uso de Migrate, vamos a ir a nuestra línea de comandos y vamos a escribir lo suiguiente:
Ahora, vamos a crear la tabla con el siguiente código:
La tabla la encontramos en database/migrations/create-users-table:
Yo la hice así, porque así lo necesitaba, tu puedes hacerla como te de la gana!.Ahora sí, vamos a migrar la tabla así se crea en la base de datos, con la siguiente línea:
Ahora, importante, vamos a crear un Seeder, es decir vamos a sembrarinformación a nuestra base de datos y en el momento de crear el usuario vamos a codificar la contraseña!. Todas las clases Seed se guardan en la base de datos.
De manera predeterminada se define la clase DatabaseSeeder ahora la clase que vayamos a crear puede tener cualquier nombre, auqnue mejor seguir las convenciones, en este caso vamos a llamarla UsersTableSeeders, nos vamos a la línea de comandos y escribimos:

Ahora que tenemos nuestra Seed creado, vamos a database / seeds y la rellenamos:


Como puedes ver, he utilizado bcrypt para encriptar la contraseña.
Ahora, nos vamos a ir a DatabaseSeeder.php y vamos a escribir lo siguiente:
Y ahora vamos a la consola y escribimos los siguiente



2- Crear controlador de autenticación y dentro dos funciones: Login y Logout

Cómo accedemos a los servicios de autenticación de Laravel?

Para acceder a los servicios de autenticación de Laravel vamos a necesitar de Auth, por eso vamos a necesitar importar Auth Facade en la parte superior de la clase.
Es el momento de hacer tu formulario y en el action crear una ruta que te lleve a un método del controlador, eso te lo dejo a ti !, doy por hecho que sabes hacerlo.
1- Vamos a crear un controlador propio que va a llamarse, por ejemplo AuthController, para no usar el que viene por defecto: LoginController.
Te vas a tu línea de comandos y dentro de la carperta de tu proyecto, escribes la siguiente línea:



2-Una vez creado nuestro controlador vamos a el, en la carpeta App | Http | Controllers, y allí está AuthController !.
Lo vamos a abrir y recordemos que tenemos que usar sí i sí Auth Facade, así que arriba del todo vamos a copiar el siguiente código:

Quedando nuestro código de la siguiente manera:


3-Ahora, vamos a crear de nuestra clase AuthController dos funciones que van a ser:
  1. Función para el Login
  2. Función para el Logout
4-Función Login:
Como vemos, estamos usando la clase Request, que está en el namespace
"Illuminate\Http\Request", que nos permite acceder a los datos que estamos recibiendo de nuestro formulario (que aún no hemos creado).

Así, como ves, en los parámetros de nuestra función debes recibir Request $request, puede ser una ovbiedad, pero siempre viene bien explicarlo.
Ahora comencemos, en la función Login vamos a necesitar el método  attempt.

Pero qué es el método attempt?!

Pues el método attempt nos va a devolver un booleano, nos va a decir básicamente true o false, dependiendo si los datos que estamos recibiendo coinciden con los que están en nuestra base de datos.😋
Dicho esto, vamos a crear el método:

Qué estamos haciendo?, Pues estamos recibiendo los datos email y password del formulario de login.
Los recibimos con $request.
Los vamos a meter en una variable que declaramos como $credentials, y luego, con Auth::attempt vamos a decir: si email y password coinciden son los que están en la base de datos me envías a la ruta "dashboard", en este caso, yo le he puesto ese nombre, tu puedes poner el nombre que quieras!.
Puedes crear ovbiamente un else para redireccionar en caso de false otra vez al formulario!.
5- Ahora vamos a crear el Logout, es más fácil aún:


3-Crear las rutas

 Ahora deberás crear las rutas en Routes | web, yo las hice de la siguiente manera:



 4-Crear las Vistas

Para  crear las vistas: resources / views: yo me cree el login.blade.php, con el fomurlario y el dashboard.blade.php, con las vistas del panel de administrador, en el caso de que el Login sea correcto y nos deje entrar!.
El archivo Login.blade.php:

Y el archivo dashboard.blade.php

Ovbio, tu le das los estilos y la info que quieras!, este es un humilde ejemplo.
Ahora, es posible que te de problemas si no has agregado el campo Remember Token en la tabla users, en mi caso no se lo agregué, si te pasa lo mismo, sólo debes escribir la siguiente línea de código en el modelo de User:


Listo!, es muy sencillo.
Lo importante es comprender lo que uno hace, empaparse en el código lo más que se pueda y compartirlo que uno ya sabe!. 
Salud !
 


No hay comentarios:

Publicar un comentario

Creando plugin Wordpress - 03

  11- USUARIOS -Para crear un usuario lo mas facil desde el admin- FUNCIONES PARA AGREGAR USUARIO: wp_create_user ( string  $username , stri...