Curso Laravel Página Web Administrable
¿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:
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.
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
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:
Para realizar un test, debemos:
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.
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:
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.LoginController
extiende Controller
. Esto establece una relación padre-hijo donde LoginController
hereda funcionalidades de la clase base Controller
.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.$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
.__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.redirectPath()
- Este método reemplaza el comportamiento predeterminado de AuthenticatesUsers
. Comprueba si el usuario autenticado tiene un campo active
establecido en 1.
active
es 1 (presumiblemente indicando un usuario administrador), se redirige a /home
./
).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
« Capítulo 3 – Configuraciones Básicas
Capítulo 5 – Definición de rutas de un proyecto Laravel »
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024