Inicio » Cursos » Laravel Página Web Administrable

Curso Laravel Página Web Administrable

Capitulo 4 ➜ Login Laravel | Rol de Usuario Simple

¿Cómo crear un Login en Laravel 11? con roles de usuario: Admin y Suscriptor de forma simple

Para crear un login con un rol de usuario simple abrimos la terminal y ejecutamos el comando artisan correspondiente: php artisan ui auth, luego agregamos el campo active al model User, finalmente modificamos LoginController

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.

En nuestra lógica definimos dos roles o mejor dicho dos tipos de usuario:

  1. El administrador .- Accede a gestionar las informarción de la página web 
  2. El Visitante .- Se registra y puede acceder a una determinada sección

Para un sistema de autenticación mucho más optimizado con roles de usuario bien definidos con secciones privadas recomendamos implementar la dependencia de spatie laravel-permission.

 

¿Cómo hacer Login en Laravel 11?

Pues muy fácilmente con dos comandos que a continuación veremos, pero antes aclaro debes tener instalado correctamente Laravel. Sigamos:

Entonces, en la terminal escribimos 

composer require laravel/ui

Luego traemos la autenticación, en este caso sin librerias adicionales 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 modificaciones

 

Agregando tipo de usuario con active

Para esta funcionalidad simplemente usaremos un campo para determinar la autenticidad del administrador. Si deseas aplicar una gestión de usuarios con niveles de acceso, pues para ello debemos usar algún paquete como Spatie/laravelpermission como lo indicamos líneas arriba.

Continuando con el desarrollo de esta lección, 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',
        'active'
    ];

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('active')->default(0); // 0 = visitante | 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 active 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

 

namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
    use AuthenticatesUsers;
    protected $redirectTo = '/home';
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
    public function redirectPath(){
        // aqui realizamos una comparacion simple del campo active booleano
        // recordemos que 0 es visitante y 1 es administrador
        if(\Auth::user()->active == 1){
            // cargamos la vista home del usuario autenticado      
            return "/home"; // admin
        }else{
            // Aqui podemos destruir la sesión y redirigimos a la página principal al visitante.
            // o simplemente podemos redigirir al visitante anulando el método logout
            \Auth::logout();
            return "/";
        }
    }
}

El código provisto muestra una clase LoginController en Laravel 11 para manejar el inicio de sesión de usuarios. Veamoslo en detalle:

  • Espacio de nombres: App\Http\Controllers\Auth - Esto indica que el controlador pertenece a la sección de autenticación dentro de los controladores HTTP de la aplicación.
  • Herencia de clase: LoginController extiende Controller. Esto establece una relación padre-hijo donde LoginController hereda funcionalidades de la clase base Controller.
  • Uso de Trait: use Illuminate\Foundation\Auth\AuthenticatesUsers; - Esta línea importa un trait llamado AuthenticatesUsers que proporciona métodos preconstruidos para procesos de inicio de sesión de usuario como autenticación, control de intentos y administración de sesiones.
  • Propiedad: $redirectTo - Esta propiedad define la URL a la que se redirigirá a los usuarios después de un inicio de sesión exitoso. Por defecto, está configurado en /home.
  • Constructor: __construct() - Este método se ejecuta automáticamente cuando se crea una nueva instancia del controlador. Aquí, aplica el middleware guest a todos los métodos excepto logout. Esto asegura que solo los usuarios no autenticados puedan acceder a las funcionalidades de inicio de sesión.
  • Método personalizado: redirectPath() - Este método reemplaza el comportamiento predeterminado de AuthenticatesUsers. Comprueba si el usuario autenticado tiene un campo active establecido en 1.
    • Si active es 1 (presumiblemente indicando un usuario administrador), se redirige a /home.
    • De lo contrario, cierra la sesión del usuario y redirige a la ruta raíz (/).

En resumen, este código proporciona un LoginController con funcionalidades para el inicio de sesión del usuario, redirección basada en el tipo de usuario (potencialmente administrador) y middleware para restringir el acceso a los usuarios ya iniciados sesión.

Finalmente hacemos las pruebas necesarias de login y registro de usuarios.

 


39223 visitas

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Comprar

Más cursos que pueden interesarte

Más cursos

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024