Banear usuarios en Laravel

Fecha de publicación: agosto 10, 2021

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on google
Google+
Share on whatsapp
WhatsApp
Share on email
Email

En esta entrada vemos cómo banear usuarios en Laravel haciendo uso de Laravel Breeze, pero sería completamente funcional con Laravel Fortify u otras herramientas de autenticación.

Existen varias dependencias para banear usuarios en Laravel, en nuestro vamos a utilizar Laravel Ban, que, aunque para mi gusto falta darle una vuelta de tuerca al sistema de autenticación a través de las rutas y algún detalle más, lo que ofrece lo hace muy bien y no es poco.

Instalar Laravel Ban

Publicar migraciones y configuración

El siguiente comando publicará la migración para la tabla de bans necesaria para este package y el archivo de configuración para realizar ajustes adicionales.

La migración para la tabla bans luce de la siguiente forma.

  • Relaciones polimórficas para múltiples modelos.
  • Columna comment para almacenar el motivo.
  • Fecha de expiración, si es null nunca expirará.

Ahora abre el archivo de configuración config/ban.php y define la clave redirect_url por una url válida.

Actualiza tu migración de usuarios

Para finalizar la configuración, es necesario actualizar la tabla de usuarios añadiendo una columna llamada banned_at de la siguiente forma.

Banear usuarios en Laravel

Para banear nuestro primer usuario simplemente debemos hacer lo siguiente.

El método anterior habrá baneado al primer usuario de la tabla users durante 1 mes.

Proteger las rutas de los usuarios baneados

Por defecto este package no aplica lógica alguna en el sistema de autenticación de forma directa, pero nos ofrece un Middleware que podemos utilizar para realizar el trabajo.

Para ello, abre el archivo app/Http/Kernel.php y añade la siguiente línea a la clave $routeMiddleware.

Ahora, vamos a abrir el archivo de rutas web.php para actualizar el código por el siguiente.

Vista para los usuarios baneados

Ahora vamos a crear el archivo banned.blade.php para que los usuarios baneados sepan que están baneados, eres libre de modificarlo a tus necesidades.

Usuario baneado Laravel

Creando nuestro propio Middleware

El Middleware que viene con Laravel Ban para detectar si el usuario está baneado tiene el siguiente contenido.

Crea el tuyo personalizado o tenlo en cuenta para lo que necesites.

Unban usuarios

Para eliminar un baneo lo único que debemos hacer es utilizar el método unban de la siguiente forma.

Para conocer todas las características de este package no te pierdas su repositorio.

¿Quieres acceder a más de 150 cursos de PHP y JavaScript?

¿Quieres ganar tiempo en tus desarrollos con nuestros proyectos descargables?


Vue, Laravel, Inertia, NodeJS, WordPress, Serverless, React Native, Amazon Web Services y mucho más

Hazte Premium y consigue acceso completo
Cursosdesarrolloweb ©. Todos los derechos reservados.

Login

Create an Account Back to login/register