🔧 Admin Management
📋 Vue d'ensemble
Le module Admin Management fait partie du grand module Actors et gère les profils administrateurs du système. Il suit la logique du seeder pour créer à la fois un compte utilisateur et un profil admin associé en une seule transaction.
🏗️ Architecture
- Queue NATS :
admin-service - Patterns :
admins.* - Sécurité : bcrypt avec salt rounds (10)
- Validation : class-validator pour tous les DTOs
- Transaction : Création atomique utilisateur + admin
📡 Message Patterns NATS
1. Créer un Admin
Pattern : admins.create
Crée un nouveau compte utilisateur et un profil admin associé en une seule transaction.
Payload (CreateAdminDto)
{
"lastName": "Doe",
"firstName": "John",
"email": "john.doe@example.com",
"phone": "+1234567890",
"password": "securePassword123",
"countryId": 15,
"stateId": 106,
"accessType": "ADMIN",
"permissions": {
"users": ["create", "read", "update", "delete"],
"roles": ["create", "read", "update"],
"settings": ["read", "update"]
},
"roleId": 2
}
Logique de Création
- Vérification d'unicité : Vérifie que l'email n'existe ni dans
usersni dansadmins - Hachage du mot de passe : Utilise bcrypt avec un salt de 10
- Génération du username :
{firstName} {LASTNAME}(ex: "John DOE") - Transaction : Crée l'utilisateur puis l'admin en une seule transaction
- Valeurs par défaut :
status:ACTIVEroleId:2(rôle admin)accessType:ADMIN- Dates de vérification automatiquement définies
Réponse de Succès
{
"success": true,
"message": "Admin created successfully",
"result": {
"id": 1,
"publicId": "uuid-here",
"lastName": "Doe",
"firstName": "John",
"email": "john.doe@example.com",
"phone": "+1234567890",
"userId": 1,
"countryId": 15,
"stateId": 106,
"accessType": "ADMIN",
"permissions": {
"users": ["create", "read", "update", "delete"],
"roles": ["create", "read", "update"],
"settings": ["read", "update"]
},
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"user": {
"id": 1,
"publicId": "user-uuid",
"username": "John DOE",
"email": "john.doe@example.com",
"status": "ACTIVE"
},
"country": {
"id": 15,
"name": "France"
}
}
}
2. Lister les Admins
Pattern : admins.list
Payload (AdminQueryDto)
{
"page": 1,
"limit": 10,
"accessType": "ADMIN",
"countryId": 15,
"search": "john.doe",
"sortBy": "createdAt",
"sortOrder": "desc"
}
Filtres Disponibles
page(optionnel): Numéro de page (défaut: 1)limit(optionnel): Nombre d'éléments par page (défaut: 10)accessType(optionnel): Filtrer par type d'accès (SUPER_ADMIN,ADMIN,SUPPORT)countryId(optionnel): Filtrer par payssearch(optionnel): Recherche dans firstName, lastName, email
3. Détails d'un Admin
Pattern : admins.details
Payload
{
"id": "admin-uuid"
}
Réponse
Retourne les informations complètes de l'admin avec les relations (user, country, state).
4. Mettre à jour un Admin
Pattern : admins.update
Payload (UpdateAdminDto)
{
"id": "admin-uuid",
"updateData": {
"lastName": "Smith",
"firstName": "Jane",
"phone": "+0987654321",
"accessType": "SUPER_ADMIN",
"permissions": {
"users": ["create", "read", "update", "delete"],
"roles": ["create", "read", "update", "delete"],
"settings": ["create", "read", "update", "delete"]
}
}
}
5. Supprimer un Admin
Pattern : admins.delete
Payload
{
"id": "admin-uuid"
}
Note : Suppression logique (soft delete) - l'admin est marqué comme supprimé mais conservé en base.
🔐 Types d'Accès (AdminRole)
| Type | Description | Permissions |
|---|---|---|
SUPER_ADMIN | Accès complet au système | Toutes les permissions |
ADMIN | Accès administrateur standard | Permissions limitées |
SUPPORT | Accès support client | Lecture et support uniquement |
🛡️ Structure des Permissions
{
"users": ["create", "read", "update", "delete"],
"roles": ["create", "read", "update", "delete"],
"settings": ["create", "read", "update", "delete"],
"reports": ["read", "export"],
"analytics": ["read"],
"forum": ["moderate", "delete"],
"complaints": ["assign", "resolve"],
"transports": ["view", "manage"]
}
📊 Validation et Contraintes
Champs Obligatoires
lastName: Nom de famillefirstName: Prénomemail: Email uniquepassword: Mot de passe sécurisécountryId: Pays d'origine
Règles de Validation
- Email : Format valide et unique
- Téléphone : Format international
- Mot de passe : Minimum 8 caractères, complexité requise
- Pays/État : Doivent exister en base
🚀 Fonctionnalités Avancées
1. Gestion des Sessions
- Suivi automatique des connexions admin
- Détection d'anomalies : Connexions suspectes
- Terminaison forcée : Par les super-admins
2. Audit Trail
- Historique complet : Toutes les modifications
- Traçabilité : Qui a fait quoi et quand
- Logs sécurisés : Stockage immutable
3. Notifications
- Alertes automatiques : Nouvelles créations
- Notifications par email : Changements importants
- Système d'escalade : Problèmes critiques
💡 Exemples d'Utilisation
Créer un Super Admin
{
"lastName": "Admin",
"firstName": "Super",
"email": "superadmin@ofr.cm",
"phone": "+237123456789",
"password": "SuperSecure123!",
"countryId": 15,
"stateId": 106,
"accessType": "SUPER_ADMIN",
"permissions": {
"users": ["create", "read", "update", "delete"],
"roles": ["create", "read", "update", "delete"],
"settings": ["create", "read", "update", "delete"],
"reports": ["read", "export"],
"analytics": ["read"]
}
}
Rechercher des Admins
{
"page": 1,
"limit": 20,
"search": "support",
"accessType": "SUPPORT",
"sortBy": "createdAt",
"sortOrder": "desc"
}
🎯 Le module Admin Management offre une gestion complète et sécurisée des administrateurs avec des permissions granulaires et un audit trail complet.