116 lines
4.0 KiB
JavaScript
116 lines
4.0 KiB
JavaScript
/**
|
|
* Script pour tester l'authentification admin et l'accès aux tickets
|
|
*/
|
|
const API_URL = 'http://localhost:4000';
|
|
|
|
async function testAdminAuth() {
|
|
try {
|
|
console.log('🔐 Test d\'authentification ADMIN...\n');
|
|
|
|
// 1. Login avec le compte admin
|
|
console.log('📝 Connexion avec admin@thetiptop.com...');
|
|
const loginResponse = await fetch(`${API_URL}/api/auth/login`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
email: 'admin@thetiptop.com',
|
|
password: 'Admin123!', // Mot de passe par défaut
|
|
}),
|
|
});
|
|
|
|
if (!loginResponse.ok) {
|
|
const errorData = await loginResponse.json();
|
|
console.error('❌ Échec de connexion:', errorData);
|
|
console.log('\n💡 Si le mot de passe est incorrect, essayez avec admin@test.com');
|
|
return;
|
|
}
|
|
|
|
const loginData = await loginResponse.json();
|
|
console.log('✅ Connexion réussie!');
|
|
console.log('User:', loginData.user);
|
|
console.log('Role:', loginData.user?.role);
|
|
|
|
const token = loginData.token;
|
|
|
|
if (!token) {
|
|
console.error('❌ Token manquant dans la réponse');
|
|
return;
|
|
}
|
|
|
|
// 2. Vérifier le rôle
|
|
if (loginData.user?.role !== 'ADMIN') {
|
|
console.error(`❌ Rôle incorrect: ${loginData.user?.role}`);
|
|
console.log('Le compte doit avoir le rôle ADMIN pour accéder aux tickets');
|
|
return;
|
|
}
|
|
|
|
console.log('\n🎯 Rôle ADMIN confirmé!\n');
|
|
|
|
// 3. Tester l'accès aux tickets
|
|
console.log('📊 Récupération des tickets...');
|
|
const ticketsResponse = await fetch(`${API_URL}/api/admin/tickets`, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Authorization': `Bearer ${token}`,
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
|
|
if (!ticketsResponse.ok) {
|
|
const errorData = await ticketsResponse.json();
|
|
console.error('❌ Échec de récupération des tickets:', errorData);
|
|
console.log('Status:', ticketsResponse.status);
|
|
console.log('Headers:', Object.fromEntries(ticketsResponse.headers.entries()));
|
|
return;
|
|
}
|
|
|
|
const ticketsData = await ticketsResponse.json();
|
|
console.log('✅ Tickets récupérés avec succès!');
|
|
console.log(`Total de tickets: ${ticketsData.data?.pagination?.total || 0}`);
|
|
console.log(`Page: ${ticketsData.data?.pagination?.page || 1}`);
|
|
console.log(`Tickets sur cette page: ${ticketsData.data?.tickets?.length || 0}\n`);
|
|
|
|
if (ticketsData.data?.tickets?.length > 0) {
|
|
console.log('🎫 Exemple de tickets:');
|
|
console.table(ticketsData.data.tickets.slice(0, 5).map(t => ({
|
|
code: t.code,
|
|
status: t.status,
|
|
user: t.user_name,
|
|
prize: t.prize_name,
|
|
played_at: new Date(t.played_at).toLocaleDateString('fr-FR'),
|
|
})));
|
|
}
|
|
|
|
// 4. Tester les statistiques
|
|
console.log('\n📈 Récupération des statistiques...');
|
|
const statsResponse = await fetch(`${API_URL}/api/admin/statistics`, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Authorization': `Bearer ${token}`,
|
|
'Content-Type': 'application/json',
|
|
},
|
|
});
|
|
|
|
if (statsResponse.ok) {
|
|
const statsData = await statsResponse.json();
|
|
console.log('✅ Statistiques récupérées:');
|
|
console.log('- Utilisateurs totaux:', statsData.data?.users?.total_users);
|
|
console.log('- Tickets totaux:', statsData.data?.tickets?.total_tickets);
|
|
console.log('- Tickets en attente:', statsData.data?.tickets?.pending);
|
|
console.log('- Tickets réclamés:', statsData.data?.tickets?.claimed);
|
|
}
|
|
|
|
console.log('\n✅ Tous les tests réussis! L\'API admin fonctionne correctement.');
|
|
console.log('\n🔑 Token pour le frontend:');
|
|
console.log(`Bearer ${token}`);
|
|
console.log('\n💡 Utilisez ce token dans le localStorage du frontend:');
|
|
console.log(`localStorage.setItem('token', '${token}');`);
|
|
|
|
} catch (error) {
|
|
console.error('❌ Erreur:', error.message);
|
|
console.log('\n💡 Assurez-vous que le backend est démarré: npm start');
|
|
}
|
|
}
|
|
|
|
testAdminAuth();
|