fix problème d'authentification
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { authService } from '@/lib/auth';
|
||||
import { supabase } from '@/lib/supabase';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { Input } from '@/components/ui/input';
|
||||
@@ -34,10 +35,14 @@ export default function AuthGuard({ children, requireSuperAdmin = false }: AuthG
|
||||
const checkAuth = async () => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
console.log('🔍 AuthGuard: Vérification de l\'authentification...');
|
||||
|
||||
// Vérifier si l'utilisateur est connecté
|
||||
const user = await authService.getCurrentUser();
|
||||
if (!user) {
|
||||
// Vérifier si l'utilisateur est connecté directement avec supabase
|
||||
const { data: { user }, error: userError } = await supabase.auth.getUser();
|
||||
console.log('👤 AuthGuard: Utilisateur actuel:', user ? user.email : 'Aucun');
|
||||
|
||||
if (userError || !user) {
|
||||
console.log('❌ AuthGuard: Aucun utilisateur connecté');
|
||||
setIsAuthenticated(false);
|
||||
setIsAuthorized(false);
|
||||
setShowLogin(true);
|
||||
@@ -45,21 +50,39 @@ export default function AuthGuard({ children, requireSuperAdmin = false }: AuthG
|
||||
}
|
||||
|
||||
setIsAuthenticated(true);
|
||||
console.log('✅ AuthGuard: Utilisateur authentifié');
|
||||
|
||||
// Vérifier les permissions directement
|
||||
const { data: permissions, error: permissionsError } = await supabase
|
||||
.from('user_permissions')
|
||||
.select('*')
|
||||
.eq('user_id', user.id)
|
||||
.single();
|
||||
|
||||
if (permissionsError) {
|
||||
console.error('❌ AuthGuard: Erreur permissions:', permissionsError);
|
||||
setIsAuthorized(false);
|
||||
setError('Erreur lors de la vérification des permissions');
|
||||
return;
|
||||
}
|
||||
|
||||
// Vérifier les permissions
|
||||
if (requireSuperAdmin) {
|
||||
const isSuperAdmin = await authService.isSuperAdmin();
|
||||
const isSuperAdmin = permissions.is_super_admin;
|
||||
console.log('🔐 AuthGuard: Super Admin:', isSuperAdmin);
|
||||
setIsAuthorized(isSuperAdmin);
|
||||
} else {
|
||||
const isAdmin = await authService.isAdmin();
|
||||
const isAdmin = permissions.is_admin;
|
||||
console.log('🔐 AuthGuard: Admin:', isAdmin);
|
||||
setIsAuthorized(isAdmin);
|
||||
}
|
||||
|
||||
if (!isAuthorized) {
|
||||
setError('Vous n\'avez pas les permissions nécessaires pour accéder à cette page.');
|
||||
} else {
|
||||
console.log('✅ AuthGuard: Permissions vérifiées, accès autorisé');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur lors de la vérification d\'authentification:', error);
|
||||
console.error('❌ AuthGuard: Erreur lors de la vérification d\'authentification:', error);
|
||||
setIsAuthenticated(false);
|
||||
setIsAuthorized(false);
|
||||
setShowLogin(true);
|
||||
@@ -74,11 +97,53 @@ export default function AuthGuard({ children, requireSuperAdmin = false }: AuthG
|
||||
setIsLoggingIn(true);
|
||||
|
||||
try {
|
||||
await authService.signIn(email, password);
|
||||
await checkAuth();
|
||||
console.log('🔐 AuthGuard: Tentative de connexion directe...');
|
||||
|
||||
// Utiliser directement supabase.auth.signInWithPassword comme dans admin-login
|
||||
const { data, error: loginError } = await supabase.auth.signInWithPassword({
|
||||
email,
|
||||
password,
|
||||
});
|
||||
|
||||
if (loginError) {
|
||||
console.error('❌ AuthGuard: Erreur de connexion:', loginError);
|
||||
setError(`Erreur: ${loginError.message}`);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('✅ AuthGuard: Connexion réussie, vérification des permissions...');
|
||||
|
||||
// Vérifier les permissions directement
|
||||
const { data: permissions, error: permissionsError } = await supabase
|
||||
.from('user_permissions')
|
||||
.select('*')
|
||||
.eq('user_id', data.user.id)
|
||||
.single();
|
||||
|
||||
if (permissionsError) {
|
||||
console.error('❌ AuthGuard: Erreur permissions:', permissionsError);
|
||||
setError('Erreur lors de la vérification des permissions');
|
||||
return;
|
||||
}
|
||||
|
||||
if (requireSuperAdmin && !permissions.is_super_admin) {
|
||||
setError('Vous n\'avez pas les permissions de super administrateur');
|
||||
return;
|
||||
} else if (!requireSuperAdmin && !permissions.is_admin) {
|
||||
setError('Vous n\'avez pas les permissions administrateur');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('✅ AuthGuard: Permissions vérifiées, accès autorisé');
|
||||
|
||||
// Mettre à jour les états
|
||||
setIsAuthenticated(true);
|
||||
setIsAuthorized(true);
|
||||
setShowLogin(false);
|
||||
|
||||
} catch (error: any) {
|
||||
console.error('Erreur de connexion:', error);
|
||||
setError(error.message || 'Erreur lors de la connexion');
|
||||
console.error('❌ AuthGuard: Exception:', error);
|
||||
setError(`Erreur: ${error.message}`);
|
||||
} finally {
|
||||
setIsLoggingIn(false);
|
||||
}
|
||||
@@ -86,7 +151,7 @@ export default function AuthGuard({ children, requireSuperAdmin = false }: AuthG
|
||||
|
||||
const handleLogout = async () => {
|
||||
try {
|
||||
await authService.signOut();
|
||||
await supabase.auth.signOut();
|
||||
setIsAuthenticated(false);
|
||||
setIsAuthorized(false);
|
||||
setShowLogin(true);
|
||||
|
||||
Reference in New Issue
Block a user