# 📩 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 (
); } ``` #### Props: Aucune (composant autonome) --- ### 2. **UserManagement** - Gestion des Utilisateurs GĂšre tous les utilisateurs de la plateforme. #### FonctionnalitĂ©s: - ✅ Liste paginĂ©e des utilisateurs - ✅ CrĂ©er un nouvel employĂ© - ✅ Modifier le rĂŽle d'un utilisateur - ✅ VĂ©rifier/DĂ©vĂ©rifier un email - ✅ Supprimer un utilisateur - ✅ Filtrage par rĂŽle (CLIENT, EMPLOYEE, ADMIN) #### Utilisation: ```tsx import { UserManagement } from '@/components/admin'; export default function AdminUsersPage() { return (
); } ``` #### Props: Aucune (composant autonome) --- ### 3. **TicketManagement** - Gestion des Tickets Visualise tous les tickets du systĂšme avec filtres avancĂ©s. #### FonctionnalitĂ©s: - ✅ Liste paginĂ©e de tous les tickets - ✅ Filtrage par statut (PENDING, VALIDATED, REJECTED, CLAIMED) - ✅ Visualisation des dĂ©tails d'un ticket - ✅ Affichage des informations utilisateur et prix - ✅ Historique complet (dates de jeu, validation, etc.) #### Utilisation: ```tsx import { TicketManagement } from '@/components/admin'; export default function AdminTicketsPage() { return (
); } ``` #### Props: Aucune (composant autonome) --- ### 4. **Statistics** - Statistiques Globales Affiche les statistiques globales de la plateforme. #### FonctionnalitĂ©s: - ✅ Statistiques utilisateurs (total, par rĂŽle, emails vĂ©rifiĂ©s) - ✅ Statistiques tickets (total, par statut) - ✅ Statistiques prix (total, actifs, stock, distribuĂ©s) - ✅ RafraĂźchissement manuel #### Utilisation: ```tsx import { Statistics } from '@/components/admin'; export default function AdminDashboard() { return (
); } ``` #### Props: Aucune (composant autonome) --- ## 🔌 IntĂ©gration dans Next.js ### Exemple de page admin complĂšte CrĂ©er un fichier `app/admin/dashboard/page.tsx`: ```tsx 'use client'; import { useState } from 'react'; import { Statistics, PrizeManagement, UserManagement, TicketManagement } from '@/components/admin'; export default function AdminDashboard() { const [activeTab, setActiveTab] = useState('statistics'); 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