Hace algunos meses uno de mis clientes me solicitó una funcionalidad muy específica para una aplicación web montada en Laravel y se trataba nada menos y nada más que aplicar un seguimiento estricto de los dispositivos en donde los usuarios se conectaban en la aplicación.
Cuando estaba platicando de este nuevo feature con mi cliente, internamente en mi cabeza estaba pensando en implementar una API que me ayudará a obtener datos, sin embargo, haciendo una búsqueda más exhaustiva, encontré una solución que me vino bastante bien.
¿Cómo hacer un seguimiento de los dispositivos de los usuarios en Laravel?
Hacerlo es muy fácil y no tenemos que reinventar la rueda, el día de hoy te presentaré el paquete ivanomatteo/laravel-device-tracking
que se encargará de agregar migraciones y métodos en tu modelo User
para hacer un rastreo efectivo de los dispositivos en donde inician sesión tus usuarios.
Instalación
Ejecutaremos el siguiente comando en nuestra terminal:
composer require ivanomatteo/laravel-device-tracking
Con esto, instalaremos la librería y todas sus dependencias.
Posteriormente, necesitaremos dirigirnos a nuestro modelo User, en donde tendremos que importar el trait de la librería llamado IvanoMatteo\LaravelDeviceTracking\Traits\UseDevices
.
Quedando algo parecido al siguiente código:
use IvanoMatteo\LaravelDeviceTracking\Traits\UseDevices; class User extends Authenticatable { use HasFactory, Notifiable, UseDevices; // ... }
Integraremos el trait UseDevices
para agregar los métodos necesarios a nuestro modelo.
Bien, una vez que tengamos nuestro modelo listo, tendremos que ejecutar las migraciones de nuestra aplicación:
php artisan migrate
Esto creará dos tablas, devices
que contendrá la información de todos los dispositivos que se conectan a tu aplicación y device_user
que contiene las llaves foráneas a las tablas users
y devices
.
Uso
Si requieres conocer el dispositivo actual de tu usuario, tendrás que acceder a la relación device()
que proporciona la librería que instalamos anteriormente:
$user->device()
Eventos
Algo que proporciona la librería y que es verdaderamente sorprendente es que agrega 5 eventos a nuestro modelo User, el cual nos ayudará a detectar comportamientos extraños.
DeviceCreated
Se ejecuta cuando se detecta y almacena un nuevo dispositivo ligado a un usuario.
DeviceUpdated
Este evento se ejecuta cuando se actualiza la información de un dispositivo, como su IP por ejemplo.
DeviceHijacked
Cuando haya una actualización crítica del dispositivo se marcará la columna device_hijacked_at
con la fecha en la que se detectó un cambio crítico en la información del dispositivo.
UserSeenFromNewDevice
Este evento se ejecutará cuando se detecta un dispositivo por primera vez.
UserSeenFromUnverifiedDevice
El evento se ejecutará cuando se detectan múltiples dispositivos relacionados a un usuario, a partir del segundo dispositivo registrado se marcará como no verificado.
Este último evento es muy útil si requieres monitorear si un usuario en específico está compartiendo su cuenta con más personas.
Recuerda que puedes consultar el código de esta librería directamente en el repositorio de GitHub en: ivanomatteo/laravel-device-tracking.
Si crees que este artículo es útil para alguien que conoces o simplemente te ha gustado, te invito a compartirlo, ayudarás a que más desarrolladores eviten reinventar la rueda, aprovechando tiempo y esfuerzo en implementar sistemas parecidos a este.
Obtén beneficios exclusivos
Suscríbete al boletín y obtén beneficios exclusivos directo en tu correo.
Gracias por suscribirte...
Algo salió mal...
Primeramente gracias el post, pedirte si me puedes guiar en el uso de UserSeenFromUnverifiedDevice
Hola Jorge, buen día.
El evento UserSeenFromUnverifiedDevice se ejecuta cuando se detecta un usuario en un dispositivo por primera vez y el dispositivo no se marca como verificado.
Puedes encontrar la documentación detallada en: https://github.com/ivanomatteo/laravel-device-tracking