Post Top Ad

Your Ad Spot

jueves, 8 de octubre de 2020

Deshabilitar el registro y las rutas dinámicas de Laravel 8

 En este tutorial, veremos cómo podemos deshabilitar y eliminar la ruta de registro y ver desde el sistema de autenticación de nuestra aplicación si hay al menos un usuario administrador en nuestra base de datos. Lo lograremos agregando dinámicamente la ruta de registro al routes/web.phparchivo después de consultar la base de datos para verificar la ausencia de usuarios con el rol de administrador.

Si no siguió los tutoriales anteriores, donde comenzamos a construir una aplicación CRM desde cero usando el marco de Laravel 8, vamos a darle algunos antecedentes de por qué necesitamos deshabilitar la funcionalidad de registro en nuestra aplicación.

Estamos construyendo una aplicación CRM autohospedada que los equipos y organizaciones pueden alojar en la web para gestionar sus relaciones con los clientes. Por lo tanto, nadie debería poder registrarse excepto el primer usuario que debería ser el administrador.

Los administradores crearán otros usuarios a través del panel de usuarios.

Ya hemos agregado la autenticación de usuario usando el andamio de autenticación en Laravel 8 a través del laravel/uipaquete separado Entonces, todo lo que tenemos que hacer es personalizar el sistema para deshabilitar el registro después de la creación de un primer usuario administrador.

Nota: El equipo de Laravel recomienda a los desarrolladores usar Jetstream para los nuevos proyectos de Laravel 8, pero también han actualizado el laravel/uipaquete a la versión 3 para usarlo con Laravel 8, especialmente si está actualizando su aplicación Laravel 7/6 anterior a la última versión.

También agregamos un campo de función a la tabla de usuarios para que podamos asignar funciones de administrador a usuarios específicos en nuestra aplicación.

Deshabilitar el registro y las rutas dinámicas de Laravel 8

Aprenderemos:

  • Cómo deshabilitar el registro de nuevos usuarios y eliminar las rutas y vistas de autenticación utilizando el Auth::routes()método,
  • Cómo agregar rutas de Laravel de forma condicional / dinámica.

Ahora, abra el routes/web.phparchivo y cámbielo de la siguiente manera:

<?php
use App\User;

Route::get('/', function () {
    return view('welcome');
});

if (User::where("role","=", "admin")->exists())
{
    Auth::routes([
        'register' => false
    ]);

}
else
{
    Auth::routes();
}

Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');

Ahora, la vista de registro y la ruta no se agregarán a nuestra aplicación Laravel si hay al menos un usuario con un rol de administrador en la base de datos. Este primer usuario administrador debe agregarse a nuestra aplicación la primera vez que hospedamos la aplicación como parte del proceso de configuración inicial. Después de eso, el registro de nuevos usuarios estará deshabilitado y solo lo realizará el administrador desde un panel de usuarios.

En este punto, si ejecuta la aplicación, seguirá viendo la ruta de registro y la vista incluso después de registrarse para una primera cuenta, simplemente porque incluso si tenemos la lógica que deshabilita dinámicamente el registro usando una condición en el routes/web.phparchivo, el usuario registrado tiene un userrol ya que es el valor predeterminado del campo de rol.

Necesitamos una forma de cambiar el rol adminjusto antes de que el usuario se guarde en la base de datos.

Laravel proporciona observadores y eventos de modelo que veremos en el próximo tutorial y los usaremos para implementar nuestra funcionalidad deseada.

Conclusión

En este tutorial, hemos visto cómo deshabilitar el registro en nuestra aplicación Laravel 8 llamando condicionalmente al Auth::routes()método para insertar dinámicamente las rutas apropiadas dependiendo de la existencia o ausencia de usuarios administradores en la base de datos.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas