fix problème d'authentification

This commit is contained in:
Yannick Le Duc
2025-09-16 13:31:12 +02:00
parent bbb9b20c85
commit cb98d1c87c
5 changed files with 416 additions and 23 deletions

View File

@@ -12,9 +12,26 @@ export interface UserPermissions {
export const authService = {
// Vérifier si l'utilisateur actuel est connecté
async getCurrentUser() {
const { data: { user }, error } = await supabase.auth.getUser();
if (error) throw error;
return user;
try {
const { data: { user }, error } = await supabase.auth.getUser();
if (error) {
console.error('❌ Erreur getCurrentUser:', error);
// Si c'est une erreur de session manquante, retourner null au lieu de throw
if (error.message?.includes('Auth session missing') || error.message?.includes('session_not_found')) {
console.log('🔍 Session manquante, utilisateur non connecté');
return null;
}
throw error;
}
return user;
} catch (error: any) {
console.error('❌ Exception getCurrentUser:', error);
// Gérer les erreurs de session manquante
if (error.message?.includes('Auth session missing') || error.message?.includes('session_not_found')) {
return null;
}
throw error;
}
},
// Vérifier si l'utilisateur actuel est admin
@@ -87,18 +104,56 @@ export const authService = {
// Connexion
async signIn(email: string, password: string) {
const { data, error } = await supabase.auth.signInWithPassword({
email,
password,
});
if (error) throw error;
return data;
try {
console.log('🔐 Tentative de connexion pour:', email);
const { data, error } = await supabase.auth.signInWithPassword({
email,
password,
});
if (error) {
console.error('❌ Erreur de connexion:', error);
throw error;
}
console.log('✅ Connexion réussie pour:', email);
return data;
} catch (error) {
console.error('❌ Exception lors de la connexion:', error);
throw error;
}
},
// Déconnexion
async signOut() {
const { error } = await supabase.auth.signOut();
if (error) throw error;
try {
// Déconnexion standard
const { error } = await supabase.auth.signOut();
if (error) throw error;
// Nettoyage supplémentaire pour éviter les problèmes de session
// Supprimer tous les tokens du localStorage
if (typeof window !== 'undefined') {
const keys = Object.keys(localStorage);
keys.forEach(key => {
if (key.startsWith('sb-') || key.includes('supabase')) {
localStorage.removeItem(key);
}
});
// Supprimer aussi du sessionStorage
const sessionKeys = Object.keys(sessionStorage);
sessionKeys.forEach(key => {
if (key.startsWith('sb-') || key.includes('supabase')) {
sessionStorage.removeItem(key);
}
});
}
} catch (error) {
console.error('Erreur lors de la déconnexion:', error);
throw error;
}
},
// Inscription (pour les tests)