diff --git a/src/components/auth/ProtectedRoute.tsx b/src/components/auth/ProtectedRoute.tsx index 0d51ee1..0d1bbfa 100644 --- a/src/components/auth/ProtectedRoute.tsx +++ b/src/components/auth/ProtectedRoute.tsx @@ -24,8 +24,26 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => { const { isChecking } = useProfileCompletion(session?.user?.email || ''); useEffect(() => { + // Verificar sessão inicial + supabase.auth.getSession().then(({ data: { session } }) => { + console.log('🔐 Sessão inicial:', session?.user?.email); + setSession(session); + setLoggedIn(!!session); + setUser(session?.user ? { id: session.user.id } : null); + + if (session?.user?.email) { + localStorage.setItem('userEmail', session.user.email); + } else { + localStorage.removeItem('userEmail'); + } + + setIsLoading(false); + }); + + // Listener para mudanças de auth const { data: { subscription } } = supabase.auth.onAuthStateChange( (_event, session) => { + console.log('🔄 Mudança de auth:', _event, session?.user?.email); setSession(session); setLoggedIn(!!session); setUser(session?.user ? { id: session.user.id } : null); @@ -61,6 +79,7 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => { // Se tem sessão mas perfil não está completo, redirecionar para completar perfil if (session && !isProfileComplete) { + console.log('🚨 Redirecionando para complete-profile - perfil incompleto'); return ; } diff --git a/src/hooks/useProfileCompletion.ts b/src/hooks/useProfileCompletion.ts index bc28856..27ca952 100644 --- a/src/hooks/useProfileCompletion.ts +++ b/src/hooks/useProfileCompletion.ts @@ -27,9 +27,22 @@ export const useProfileCompletion = (userEmail: string) => { console.error('❌ Erro ao verificar perfil:', error); setProfileComplete(false); } else if (usuario) { - // Verificar se tem nome e whatsapp preenchidos - const isComplete = !!(usuario.nome?.trim() && usuario.whatsapp?.trim()); - console.log('📋 Perfil completo:', isComplete, { nome: usuario.nome, whatsapp: usuario.whatsapp }); + // Verificar se tem nome REAL (não placeholder) e whatsapp válido + const hasRealName = usuario.nome && + usuario.nome.trim() !== '' && + usuario.nome !== 'Nome não informado'; + const hasValidWhatsApp = usuario.whatsapp && + usuario.whatsapp.trim() !== '' && + usuario.whatsapp !== '00000000000' && + usuario.whatsapp.length >= 10; + + const isComplete = hasRealName && hasValidWhatsApp; + console.log('📋 Perfil completo:', isComplete, { + nome: usuario.nome, + whatsapp: usuario.whatsapp, + hasRealName, + hasValidWhatsApp + }); setProfileComplete(isComplete); } else { console.log('👤 Usuário não encontrado na tabela usuarios'); diff --git a/src/pages/CompleteProfile.tsx b/src/pages/CompleteProfile.tsx index 3eb374c..6856daf 100644 --- a/src/pages/CompleteProfile.tsx +++ b/src/pages/CompleteProfile.tsx @@ -29,9 +29,13 @@ const CompleteProfile = () => { setUserEmail(user.email || ''); setUserId(user.id); + console.log('👤 Dados do usuário Google:', user.user_metadata); + // Pre-fill nome if available from Google - const displayName = user.user_metadata?.full_name || user.user_metadata?.name || ''; - if (displayName) { + const displayName = user.user_metadata?.full_name || + user.user_metadata?.name || + user.user_metadata?.display_name || ''; + if (displayName && displayName !== 'Nome não informado') { setNome(displayName); } } else { @@ -65,6 +69,7 @@ const CompleteProfile = () => { try { console.log('📝 Salvando dados complementares do perfil...'); + const whatsappOnly = whatsapp.replace(/\D/g, ''); // Atualizar dados do usuário no Supabase const { error: updateError } = await supabase @@ -72,7 +77,7 @@ const CompleteProfile = () => { .update({ nome: nome.trim(), empresa: empresa.trim() || null, - whatsapp: whatsapp.replace(/\D/g, '') + whatsapp: whatsappOnly }) .eq('email', userEmail.toLowerCase().trim()); @@ -88,22 +93,24 @@ const CompleteProfile = () => { const webhookSuccess = await sendNewUserWebhook( userEmail, userId, - whatsapp.replace(/\D/g, '') + whatsappOnly ); if (webhookSuccess) { console.log('✅ Webhook N8N enviado com sucesso'); + toast.success("Perfil completado!", { + description: "Seus dados foram salvos e seu workspace está sendo configurado.", + }); } else { console.warn('⚠️ Falha no webhook N8N, mas perfil foi salvo'); + toast.success("Perfil completado!", { + description: "Seus dados foram salvos. A configuração do workspace pode demorar alguns minutos.", + }); } // Marcar perfil como completo setProfileComplete(true); - toast.success("Perfil completado!", { - description: "Seus dados foram salvos e sua conta está ativa.", - }); - // Redirecionar para dashboard navigate('/');