/** * Página de Callback OAuth * * Processa o retorno do OAuth e redireciona o usuário */ import React, { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { supabase } from '../lib/supabase'; import { Loader2 } from 'lucide-react'; export const AuthCallback: React.FC = () => { const navigate = useNavigate(); useEffect(() => { console.log('🔄 AuthCallback montado.'); const processSession = async () => { try { console.log('🔍 Verificando sessão em background...'); const { data } = await supabase.auth.getSession(); if (data.session?.user) { const user = data.session.user; console.log('✅ Sessão confirmada:', user.email); // SE FOR O SUPER ADMIN, FORÇAR O ROLE 'DEV' if (user.email === 'admtracksteel@gmail.com') { console.log('👑 Super Admin detectado! Atualizando permissões...'); // eslint-disable-next-line @typescript-eslint/no-explicit-any await (supabase as any).from('usuarios').upsert({ id: user.id, email: user.email, nome: user.user_metadata?.full_name || 'Super Admin', role: 'dev', // Garante que seja dev ativo: true }); console.log('👑 Permissões de Super Admin aplicadas!'); } // Redirecionar imediatamente window.location.replace('/'); } else { // Sem sessão (ainda processando ou erro), esperar um pouco e tentar dnv ou ir para login setTimeout(() => window.location.replace('/login'), 5000); } } catch (e) { console.error('⚠️ Erro na verificação de sessão:', e); window.location.replace('/login'); } }; // Adiciona um pequeno delay para garantir que o supabase-js processou a URL (implicit / pkce hash) const timer = setTimeout(() => { processSession(); }, 800); return () => clearTimeout(timer); }, [navigate]); const handleForceLogin = () => { window.location.href = '/'; }; return (

Validando Credenciais...

Atualizando permissões de acesso.

); };