feat: Gestion des sessions utilisateur
Permet aux utilisateurs de visualiser et gérer leurs sessions actives sur différents appareils, avec la possibilité de révoquer des sessions à distance en cas de suspicion d'activité non autorisée. Fonctionnalités : - Liste des sessions actives avec métadonnées (appareil, navigateur, localisation) - Identification de la session courante - Révocation individuelle d'une session - Révocation de toutes les autres sessions - Déconnexion avec nettoyage des cookies sur les deux chemins (legacy et actuel) Sécurité : - Cache frontend scopé par utilisateur pour éviter les fuites entre comptes - Validation que le refresh token appartient à l'utilisateur JWT authentifié - TTL des sessions Redis aligné sur l'expiration du refresh token - Événements d'audit pour traçabilité (SessionInvalidee, ToutesSessionsInvalidees) @see Story 1.6 - Gestion des sessions
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Application\Port;
|
||||
|
||||
use App\Administration\Domain\Model\Session\Location;
|
||||
|
||||
/**
|
||||
* Port interface for IP geolocation operations.
|
||||
*
|
||||
* This abstracts the geolocation mechanism, allowing the Application
|
||||
* layer to remain independent of the specific implementation
|
||||
* (e.g., MaxMind GeoLite2, IP-API, etc.).
|
||||
*
|
||||
* Current implementation: NullGeoLocationService (stores IP without resolution).
|
||||
* Future implementation: MaxMindGeoLocationService using GeoLite2-City database
|
||||
* for country/city resolution. This will be implemented when the feature is
|
||||
* prioritized (requires GeoLite2 license and periodic database updates).
|
||||
*
|
||||
* @see Story 1.6 - Gestion des sessions
|
||||
*/
|
||||
interface GeoLocationService
|
||||
{
|
||||
/**
|
||||
* Locate an IP address.
|
||||
*
|
||||
* Returns Location with country and city if available,
|
||||
* or Location::unknown() if geolocation fails.
|
||||
*/
|
||||
public function locate(string $ipAddress): Location;
|
||||
}
|
||||
Reference in New Issue
Block a user