Lección 9: Login con Auth
Bien, en esta parte del curso vamos a establecer la lógica del sistema de autenticación para nuestro proyecto web. Laravel nos provee de un sistema de autenticación muy fácil de implementar pero con un robusta arquitectura que podemos aprovechar además de ser muy sencilla su implementación.
Nuestra lógica parte que tendremos dos roles o tipos de usuarios:
- El administrador .- Accede a gestionar las informarción de la página web
- El suscriptor.- Se registra y accede a una determinada sección
¿Cómo hacer Login en Laravel 8?
Pues muy fácilmente con dos comandos que a continuación veremos, pero antes aclaro debes tener instalado correctamete Laravel 8. Sigamos:
En la terminal escribimos
composer require laravel/ui
Luego traemos la autenticación sin librerias como react, vue o bootstrap:
php artisan ui:auth
Y listo ya tenemos un sistema de login y registro completamente funcional. pero para nuestro propósito necesitamos hacer las siguientes modficaciones
Agregando tipo de usuario
Necesitamos agregar un atributo al modelo y la migración User para poder validar el tipo de usuario con un valor booleano. Es decir si admininistrador tendrá un valor de 1 o true y si es suscriptor se le asignará false o 0. Bajo ésta lógica implementemos lo siguiente:
Models/User.php
protected $fillable = [
'name',
'email',
'password',
'tipo_usuario'
];
En la migración correspondiente a User tambien debemos declarar el atributo.
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->boolean('tipo_usuario')->default(0); // 0 = suscriptor && 1 = administrador
$table->rememberToken();
$table->timestamps();
});
}
Con esto ya podemos hacer la migración correspondiente:
Testing en el Login
Para realizar un test, debemos:
- Levantar el servidor local,
- Tener la conexión a la base de datos correcta
- Realizar la migración
- Realizar un registro y login de usuarios determinando el tipo de usuario que acceder y redirigir a determinada sección según los privilegios otorgados durante el proceso de autenticación.
Migrar el modelo en cuestión requiere escribir el siguiente comando artisan en nuestra terminal.
php artisan migrate
Esto hará que en nuestra base de datos se creen varias tablas de las cuales la que nos interesa para este caso es la tabla User con el campo tipo_usuario correctamente creadas.
Luego procedemos a registrar un usuario, si se realiza el registro correctamente veremos que se ha guardado el tipo_usuario con el valor 0 es aquí dónde le damos el valor de 1 al administrador.
Determinar el rol del usuario en el proceso de Login
Pues básicamente en el Controlador de Login debemos realizar la validación para que el usuario accceda a determinada sección si es administrador o suscriptor
LoginController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function redirectPath(){
if(Auth::user()->tipo_usuario){
return '/admin/panel';
}
return '/home';
}
}
Finalmente hacemos las pruebas necesarias de login y registro de usuarios.
36762 visitas