Skip to main content

👤 Users & Sessions

📋 Vue d'ensemble

Le module Users & Sessions permet aux administrateurs de gérer les utilisateurs du système et surveiller leurs sessions. Il offre des outils complets pour la gestion des comptes, la sécurité et le monitoring des activités.

🏗️ Architecture

  • Queue NATS : admin-service
  • Patterns : users.*, sessions.*
  • Sécurité : Monitoring des sessions
  • Gestion : Comptes utilisateurs
  • Analytics : Activité et engagement

📡 Message Patterns NATS - Users

1. Lister les Utilisateurs

Pattern : users.all

Payload (UserQueryDto)

{
"page": 1,
"limit": 10,
"status": "ACTIVE",
"role": "CLIENT",
"search": "john.doe",
"sortBy": "createdAt",
"sortOrder": "desc"
}

Filtres Disponibles

FiltreTypeDescription
statusStringStatut du compte (ACTIVE, INACTIVE, SUSPENDED, DELETED)
roleStringRôle utilisateur (CLIENT, DRIVER, ADMIN)
isVerifiedBooleanCompte vérifié ou non
searchStringRecherche dans nom, email, téléphone

Réponse

{
"success": true,
"message": "Users retrieved successfully",
"result": {
"data": [
{
"id": 1,
"publicId": "user-uuid",
"username": "John DOE",
"email": "john.doe@example.com",
"phone": "+237123456789",
"status": "ACTIVE",
"role": "CLIENT",
"isVerified": true,
"emailVerifiedAt": "2024-01-10T10:00:00Z",
"phoneVerifiedAt": "2024-01-10T10:05:00Z",
"lastLoginAt": "2024-01-15T08:30:00Z",
"createdAt": "2024-01-10T09:00:00Z",
"profile": {
"firstName": "John",
"lastName": "Doe",
"country": "Cameroun",
"city": "Douala"
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1250,
"totalPages": 125
}
}
}

2. Détails d'un Utilisateur

Pattern : users.details

Payload

{
"id": "user-uuid"
}

Réponse Complète

{
"success": true,
"message": "User details retrieved successfully",
"result": {
"id": 1,
"publicId": "user-uuid",
"username": "John DOE",
"email": "john.doe@example.com",
"phone": "+237123456789",
"status": "ACTIVE",
"role": "CLIENT",
"isVerified": true,
"emailVerifiedAt": "2024-01-10T10:00:00Z",
"phoneVerifiedAt": "2024-01-10T10:05:00Z",
"lastLoginAt": "2024-01-15T08:30:00Z",
"createdAt": "2024-01-10T09:00:00Z",
"updatedAt": "2024-01-15T08:30:00Z",
"profile": {
"firstName": "John",
"lastName": "Doe",
"dateOfBirth": "1990-05-15",
"country": "Cameroun",
"city": "Douala",
"address": "Rue de la Liberté, Akwa",
"avatar": "/uploads/avatars/user-avatar.jpg"
},
"statistics": {
"totalTransports": 25,
"completedTransports": 23,
"cancelledTransports": 2,
"totalSpent": "2500000 FCFA",
"averageRating": 4.7,
"joinedDaysAgo": 35
},
"recentActivity": [
{
"action": "LOGIN",
"timestamp": "2024-01-15T08:30:00Z",
"details": "Connexion depuis mobile app"
},
{
"action": "TRANSPORT_CREATED",
"timestamp": "2024-01-14T15:20:00Z",
"details": "Nouveau transport CAM-2024-001"
}
]
}
}

3. Suspendre/Activer un Utilisateur

Pattern : users.update-status

Payload

{
"id": "user-uuid",
"statusData": {
"status": "SUSPENDED",
"reason": "Violation des conditions d'utilisation",
"suspensionDuration": "7 days",
"comment": "Suspension temporaire suite à signalements multiples"
}
}

4. Statistiques des Utilisateurs

Pattern : users.stats

Payload

{
"period": "month"
}

Réponse

{
"success": true,
"message": "User statistics retrieved successfully",
"result": {
"overview": {
"totalUsers": 1250,
"activeUsers": 1180,
"suspendedUsers": 45,
"deletedUsers": 25,
"newUsersThisMonth": 85
},
"byRole": [
{"role": "CLIENT", "count": 950},
{"role": "DRIVER", "count": 280},
{"role": "ADMIN", "count": 20}
],
"byStatus": [
{"status": "ACTIVE", "count": 1180},
{"status": "INACTIVE", "count": 25},
{"status": "SUSPENDED", "count": 45}
],
"verification": {
"emailVerified": 1100,
"phoneVerified": 1050,
"fullyVerified": 1000
},
"engagement": {
"dailyActiveUsers": 320,
"weeklyActiveUsers": 680,
"monthlyActiveUsers": 950
}
}
}

📡 Message Patterns NATS - Sessions

1. Lister les Sessions Actives

Pattern : sessions.active

Payload (SessionQueryDto)

{
"page": 1,
"limit": 10,
"userId": "user-uuid",
"deviceType": "mobile",
"sortBy": "lastActivity",
"sortOrder": "desc"
}

Réponse

{
"success": true,
"message": "Active sessions retrieved successfully",
"result": {
"data": [
{
"id": 1,
"publicId": "session-uuid",
"userId": "user-uuid",
"deviceType": "mobile",
"deviceInfo": "iPhone 13 Pro - iOS 17.2",
"ipAddress": "192.168.1.100",
"location": "Douala, Cameroun",
"userAgent": "FreeTrade Mobile App v2.1.0",
"createdAt": "2024-01-15T08:30:00Z",
"lastActivity": "2024-01-15T14:20:00Z",
"isActive": true,
"user": {
"id": 1,
"username": "John DOE",
"email": "john.doe@example.com"
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 450,
"totalPages": 45
}
}
}

2. Terminer une Session

Pattern : sessions.terminate

Payload

{
"id": "session-uuid",
"reason": "Activité suspecte détectée"
}

3. Terminer toutes les Sessions d'un Utilisateur

Pattern : sessions.terminate-user-sessions

Payload

{
"userId": "user-uuid",
"reason": "Demande de sécurité - réinitialisation des sessions",
"excludeCurrentSession": false
}

4. Statistiques des Sessions

Pattern : sessions.stats

Payload

{
"period": "day"
}

Réponse

{
"success": true,
"message": "Session statistics retrieved successfully",
"result": {
"overview": {
"totalActiveSessions": 450,
"uniqueActiveUsers": 320,
"newSessionsToday": 85,
"terminatedSessionsToday": 42
},
"byDeviceType": [
{"deviceType": "mobile", "count": 280},
{"deviceType": "web", "count": 150},
{"deviceType": "tablet", "count": 20}
],
"byLocation": [
{"country": "Cameroun", "count": 380},
{"country": "France", "count": 45},
{"country": "Côte d'Ivoire", "count": 25}
],
"sessionDuration": {
"average": "2.5 heures",
"median": "1.8 heures",
"longest": "8.2 heures"
},
"securityAlerts": {
"suspiciousLogins": 3,
"multipleDevices": 12,
"unusualLocations": 5
}
}
}

📊 Enums et Statuts

Statuts Utilisateur (UserStatus)

enum UserStatus {
ACTIVE = 'ACTIVE', // Actif
INACTIVE = 'INACTIVE', // Inactif
SUSPENDED = 'SUSPENDED', // Suspendu
DELETED = 'DELETED' // Supprimé
}

Rôles Utilisateur (UserRole)

enum UserRole {
CLIENT = 'CLIENT', // Client
DRIVER = 'DRIVER', // Chauffeur
ADMIN = 'ADMIN' // Administrateur
}

Types d'Appareil (DeviceType)

enum DeviceType {
MOBILE = 'mobile', // Mobile
WEB = 'web', // Navigateur web
TABLET = 'tablet', // Tablette
DESKTOP = 'desktop' // Ordinateur de bureau
}

🛡️ Fonctionnalités de Sécurité

1. Monitoring des Sessions

  • Détection d'anomalies : Connexions suspectes
  • Géolocalisation : Suivi des connexions
  • Multi-device : Gestion des appareils multiples
  • Terminaison forcée : Sécurité renforcée

2. Gestion des Comptes

  • Suspension temporaire : Avec durée définie
  • Vérification : Email et téléphone
  • Historique d'activité : Traçabilité complète
  • Alertes sécurité : Notifications automatiques

3. Analytics Avancées

  • Engagement utilisateur : DAU, WAU, MAU
  • Patterns d'utilisation : Heures de pointe
  • Rétention : Analyse de fidélité
  • Segmentation : Par rôle et comportement

💡 Exemples d'Utilisation

Suspendre un Utilisateur Problématique

{
"id": "user-problematic-001",
"statusData": {
"status": "SUSPENDED",
"reason": "Comportement abusif dans le forum",
"suspensionDuration": "14 days",
"comment": "Suspension suite à signalements multiples - révision dans 14 jours"
}
}

Terminer les Sessions Suspectes

{
"userId": "user-security-alert",
"reason": "Connexions depuis plusieurs pays simultanément - mesure de sécurité",
"excludeCurrentSession": true
}

Analyser l'Engagement Mensuel

{
"period": "month",
"includeEngagementMetrics": true,
"includeSecurityAlerts": true
}

🎯 Le module Users & Sessions offre une gestion complète des utilisateurs avec monitoring de sécurité avancé, analytics d'engagement et outils de modération pour maintenir un environnement sûr et performant.