User Agent

AuditChain capture automatiquement la chaîne user agent de la requête HTTP courante et la stocke dans chaque entrée de log d'audit. Cela permet d'identifier quel navigateur, client API ou appareil a déclenché une modification.

Capture automatique

Aucune configuration nécessaire. Lorsqu'un model auditable change pendant une requête HTTP, la colonne user_agent est remplie à partir des en-têtes de la requête :

$order->update(['status' => 'shipped']);

// Le log d'audit inclut :
// user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..."

Contexte console et file d'attente

Lorsque des modifications surviennent en dehors d'une requête HTTP — dans des commandes Artisan, des jobs en file d'attente ou des tâches planifiées — le user agent est défini à null :

// Dans une commande Artisan ou un job en file d'attente
$order->update(['status' => 'processed']);

// Audit log: user_agent = null

Cela permet de distinguer facilement les modifications initiées par un utilisateur de celles initiées par le système.

Ce qui est capturé

La valeur complète de l'en-tête User-Agent est stockée telle quelle. Exemples courants :

Source User Agent
Navigateur Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...
Application mobile MyApp/2.1.0 (iOS 17.0; iPhone14,5)
Client API GuzzleHttp/7
Artisan / Queue null

Interroger par user agent

Retrouvez les modifications effectuées depuis un client spécifique :

$order->auditLogs()
    ->where('user_agent', 'like', '%iPhone%')
    ->get();

// Ou retrouvez toutes les modifications initiées par le système
$order->auditLogs()
    ->whereNull('user_agent')
    ->get();

Adresse IP

La capture du user agent fonctionne conjointement avec la capture automatique de l'adresse IP. Les deux sont résolus à partir de la requête courante et les deux sont null en contexte console. Ensemble, ils fournissent une image claire de l'origine et de la manière dont une modification a été effectuée.