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...