# đŠ Composants d'Administration - The Tip Top
Documentation des composants d'administration pour le frontend Next.js.
---
## đ Structure
```
components/admin/
âââ index.ts # Export centralisĂ©
âââ PrizeManagement.tsx # Gestion des prix
âââ UserManagement.tsx # Gestion des utilisateurs
âââ TicketManagement.tsx # Gestion des tickets
âââ Statistics.tsx # Statistiques globales
âââ README.md # Ce fichier
```
---
## đŻ Composants disponibles
### 1. **PrizeManagement** - Gestion des Prix
GÚre tous les prix du jeu (création, modification, suppression).
#### Fonctionnalités:
- â
Liste tous les prix avec pagination
- â
Créer un nouveau prix
- â
Modifier un prix existant
- â
Supprimer (désactiver) un prix
- â
Affichage du stock et probabilités
- â
Filtrage par statut (actif/inactif)
#### Utilisation:
```tsx
import { PrizeManagement } from '@/components/admin';
export default function AdminPrizesPage() {
return (
{/* Navigation tabs */}
{/* Content */}
{activeTab === 'statistics' &&
}
{activeTab === 'prizes' &&
}
{activeTab === 'users' &&
}
{activeTab === 'tickets' &&
}
);
}
```
---
## đ Protection des routes admin
Utilisez un middleware pour protéger les routes admin:
```typescript
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const token = request.cookies.get('auth_token');
const user = request.cookies.get('user_data');
if (!token || !user) {
return NextResponse.redirect(new URL('/login', request.url));
}
const userData = JSON.parse(user.value);
if (userData.role !== 'ADMIN') {
return NextResponse.redirect(new URL('/', request.url));
}
return NextResponse.next();
}
export const config = {
matcher: '/admin/:path*',
};
```
---
## đĄ Services utilisĂ©s
Tous les composants utilisent le service `adminService` qui communique avec l'API backend:
```typescript
import { adminService } from '@/services/admin.service';
// Exemples d'utilisation
const stats = await adminService.getStatistics();
const prizes = await adminService.getAllPrizes();
const users = await adminService.getAllUsers(page, limit);
const tickets = await adminService.getAllTickets(page, limit, filters);
```
---
## đš Personnalisation
### ThĂšmes et styles
Les composants utilisent Tailwind CSS. Pour personnaliser:
1. Modifiez les classes Tailwind directement dans les composants
2. Ou créez des thÚmes dans `tailwind.config.js`
### Traductions
Les composants sont en français. Pour internationaliser:
1. Utilisez `next-intl` ou `react-i18next`
2. Remplacez les chaßnes hardcodées par des clés de traduction
---
## âïž Configuration requise
### Variables d'environnement
```env
NEXT_PUBLIC_API_URL=http://localhost:4000/api
```
### Dépendances
- React 18+
- Next.js 14+
- TypeScript
- Tailwind CSS
---
## đ Gestion des erreurs
Tous les composants gĂšrent les erreurs avec:
- Messages d'erreur utilisateur-friendly
- Affichage visuel des erreurs
- Logging des erreurs en console (développement)
---
## đ Exemple de flux complet
### 1. Créer un prix
```tsx
// L'utilisateur clique sur "Ajouter un prix"
// â Modal s'ouvre
// â Remplit le formulaire
// â Soumet
// â adminService.createPrize() est appelĂ©
// â Liste des prix est rafraĂźchie
```
### 2. Modifier un utilisateur
```tsx
// L'utilisateur clique sur "Modifier" sur un user
// â Modal s'ouvre avec les donnĂ©es
// â Modifie le rĂŽle
// â Soumet
// â adminService.updateUser() est appelĂ©
// â Liste des users est rafraĂźchie
```
---
## â
Checklist d'intégration
- [ ] Installer les dépendances requises
- [ ] Configurer les variables d'environnement
- [ ] Ajouter le service `adminService`
- [ ] Ajouter les types TypeScript
- [ ] Protéger les routes admin avec middleware
- [ ] Créer les pages admin
- [ ] Tester chaque composant
- [ ] Ajouter la gestion des erreurs globale
---
## đ DĂ©ploiement
Avant de déployer:
1. Vérifier que toutes les routes API sont sécurisées
2. Tester l'authentification admin
3. Vérifier les permissions CORS
4. Activer le cache pour les statistiques
5. Optimiser les images et assets
---
## đ Support
Pour toute question ou problĂšme:
- Vérifier la console du navigateur
- Vérifier les logs de l'API backend
- Consulter la documentation de l'API
---
**Version:** 1.0.0
**DerniĂšre mise Ă jour:** 2025-11-08
**Auteur:** The Tip Top Dev Team