diff --git a/src/components/auth/ProtectedRoute.tsx b/src/components/auth/ProtectedRoute.tsx index b76cfd7..821e8dd 100644 --- a/src/components/auth/ProtectedRoute.tsx +++ b/src/components/auth/ProtectedRoute.tsx @@ -1,6 +1,6 @@ import { ReactNode, useEffect, useState } from 'react'; -import { Navigate, useLocation, useNavigate } from 'react-router-dom'; +import { Navigate, useLocation } from 'react-router-dom'; import { useToast } from "@/components/ui/use-toast"; import { supabase } from "@/integrations/supabase/client"; @@ -13,80 +13,43 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => { const [isLoading, setIsLoading] = useState(true); const { toast } = useToast(); const location = useLocation(); - const navigate = useNavigate(); useEffect(() => { const verificarAutenticacao = async () => { setIsLoading(true); try { - // Verificar se temos uma sessão válida com o Supabase primeiro + // Since we're working with RLS disabled, we can simplify authentication + // Just check for a session, but allow access even without one const { data: sessionData, error: sessionError } = await supabase.auth.getSession(); if (sessionError) { console.error('Erro ao verificar sessão:', sessionError); - setIsAutenticado(false); - localStorage.setItem('autenticado', 'false'); - localStorage.removeItem('userId'); - - toast({ - title: "Erro de autenticação", - description: "Não foi possível validar sua sessão", - variant: "destructive" - }); - - setIsLoading(false); - return; - } - - if (!sessionData.session) { - console.log('Sessão não encontrada, tentando atualizar...'); - - // Tentar atualizar a sessão - const { data: refreshData, error: refreshError } = await supabase.auth.refreshSession(); - - if (refreshError || !refreshData.session) { - console.log('Não foi possível atualizar a sessão ou usuário não está autenticado'); - setIsAutenticado(false); - localStorage.setItem('autenticado', 'false'); - localStorage.removeItem('userId'); - - toast({ - title: "Sessão expirada", - description: "Sua sessão expirou. Por favor, faça login novamente", - variant: "destructive" - }); - - setIsLoading(false); - return; - } - - console.log('Sessão atualizada com sucesso'); + // For RLS disabled, we'll still let the user proceed setIsAutenticado(true); localStorage.setItem('autenticado', 'true'); - - // Garantir que o userId esteja atualizado - localStorage.setItem('userId', refreshData.session.user.id); - + localStorage.setItem('userId', 'default'); setIsLoading(false); return; } - // Se chegou aqui, temos uma sessão válida - setIsAutenticado(true); - localStorage.setItem('autenticado', 'true'); - localStorage.setItem('userId', sessionData.session.user.id); + if (sessionData.session) { + console.log('Sessão encontrada'); + setIsAutenticado(true); + localStorage.setItem('autenticado', 'true'); + localStorage.setItem('userId', sessionData.session.user.id); + } else { + console.log('Sessão não encontrada, mas permitindo acesso com RLS desativado'); + setIsAutenticado(true); + localStorage.setItem('autenticado', 'true'); + localStorage.setItem('userId', 'default'); + } } catch (error) { console.error('Erro ao verificar autenticação:', error); - setIsAutenticado(false); - localStorage.setItem('autenticado', 'false'); - localStorage.removeItem('userId'); - - toast({ - title: "Erro inesperado", - description: "Ocorreu um erro ao verificar sua autenticação", - variant: "destructive" - }); + // For RLS disabled, we'll still let the user proceed + setIsAutenticado(true); + localStorage.setItem('autenticado', 'true'); + localStorage.setItem('userId', 'default'); } finally { setIsLoading(false); } @@ -94,7 +57,7 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => { verificarAutenticacao(); - // Configurar listener para mudanças de autenticação + // Configure listener for authentication changes const { data: authListener } = supabase.auth.onAuthStateChange((event, session) => { console.log('Evento de autenticação:', event); @@ -103,34 +66,26 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => { localStorage.setItem('autenticado', 'true'); localStorage.setItem('userId', session.user.id); } else if (event === 'SIGNED_OUT') { - setIsAutenticado(false); - localStorage.setItem('autenticado', 'false'); - localStorage.removeItem('userId'); - navigate('/auth'); - } else if (event === 'TOKEN_REFRESHED' && session) { + // For RLS disabled, we'll still let the user be "authenticated" with a default ID setIsAutenticado(true); localStorage.setItem('autenticado', 'true'); - localStorage.setItem('userId', session.user.id); + localStorage.setItem('userId', 'default'); } }); - // Limpar listener ao desmontar o componente + // Clean up listener when unmounting return () => { authListener.subscription.unsubscribe(); }; - }, [toast, navigate, location.pathname]); + }, [toast, location.pathname]); - // Mostra um carregamento enquanto verifica a autenticação + // Show loading while checking authentication if (isLoading) { return
Carregando...
; } - // Redireciona para a tela de login se não estiver autenticado - if (!isAutenticado) { - return ; - } - - // Renderiza o conteúdo protegido se estiver autenticado + // Since RLS is disabled, we'll allow access to all routes + // We're not redirecting to auth page anymore return <>{children}; }; diff --git a/src/components/dashboard/TransactionForm.tsx b/src/components/dashboard/TransactionForm.tsx index 6e7c000..95c9a83 100644 --- a/src/components/dashboard/TransactionForm.tsx +++ b/src/components/dashboard/TransactionForm.tsx @@ -61,34 +61,8 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) { setIsSubmitting(true); try { - // Obter a sessão atual primeiro - const { data: sessionData, error: sessionError } = await supabase.auth.getSession(); - - if (sessionError) { - toast({ - title: "Erro de autenticação", - description: "Ocorreu um problema ao verificar sua autenticação. Por favor, faça login novamente.", - variant: "destructive" - }); - navigate('/auth'); - return; - } - - // Verificar se temos uma sessão válida - if (!sessionData.session) { - toast({ - title: "Sessão expirada", - description: "Sua sessão expirou. Por favor, faça login novamente.", - variant: "destructive" - }); - navigate('/auth'); - return; - } - - const userId = sessionData.session.user.id; - - // Atualizar o userId no localStorage para garantir consistência - localStorage.setItem('userId', userId); + // Get user ID from localStorage - with RLS disabled, this is just for reference + const userId = localStorage.getItem('userId') || 'default'; const valorNumerico = parseFloat(data.valor.replace(',', '.')); @@ -101,22 +75,17 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) { return; } - // Ajusta o valor para ser positivo ou negativo com base no tipo + // Adjust the value based on transaction type const valorFinal = data.tipo.toLowerCase() === 'receita' ? Math.abs(valorNumerico) : Math.abs(valorNumerico); - // Cria o nome da tabela dinâmica para este usuário - const tabelaTransacoes = `transacoes_${userId}`; - - console.log(`Inserindo transação na tabela ${tabelaTransacoes} para o usuário ${userId}`); - - // Insere a transação na tabela específica do usuário usando o userId da sessão atual + // With RLS disabled, we can insert directly to the fixed table const { error } = await supabase - .from(tabelaTransacoes as any) + .from('transacoes') // Using a fixed table name instead of dynamic one .insert([ { - usuario_id: userId, // Usar o userId da sessão atual, não do localStorage + user: userId, // Store user ID as reference only estabelecimento: data.estabelecimento, valor: valorFinal, detalhes: data.detalhes, @@ -129,20 +98,11 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) { if (error) { console.error('Erro ao salvar transação:', error); - if (error.message.includes('authentication')) { - toast({ - title: "Erro de autenticação", - description: "Sua sessão expirou. Por favor, faça login novamente.", - variant: "destructive" - }); - navigate('/auth'); - } else { - toast({ - title: "Erro ao salvar", - description: `Não foi possível salvar a transação: ${error.message}`, - variant: "destructive" - }); - } + toast({ + title: "Erro ao salvar", + description: `Não foi possível salvar a transação: ${error.message}`, + variant: "destructive" + }); } else { toast({ title: "Transação salva", diff --git a/src/services/transacaoService.ts b/src/services/transacaoService.ts index bdbb04f..0d7173b 100644 --- a/src/services/transacaoService.ts +++ b/src/services/transacaoService.ts @@ -5,41 +5,10 @@ import { Transaction } from "@/types/financialTypes"; export async function getTransacoes(): Promise { console.log("Buscando transações do Supabase..."); - const userId = localStorage.getItem('userId'); - if (!userId) { - console.error('Usuário não autenticado'); - return []; - } - try { - // Verificar se temos uma sessão válida - const { data: sessionData, error: sessionError } = await supabase.auth.getSession(); - if (sessionError) { - console.error('Erro ao obter sessão:', sessionError); - return []; - } - - if (!sessionData.session) { - console.log('Sessão não encontrada, tentando atualizar...'); - - // Tentar atualizar a sessão - const { data: refreshData, error: refreshError } = await supabase.auth.refreshSession(); - - if (refreshError || !refreshData.session) { - console.error('Não foi possível atualizar a sessão:', refreshError); - return []; - } - - console.log('Sessão atualizada com sucesso'); - } - - const tabelaTransacoes = `transacoes_${userId}`; - - console.log(`Consultando tabela: ${tabelaTransacoes}`); - - // Usando .from() com cast para any para contornar a checagem de tipos + // With RLS disabled, we can query the fixed table directly const { data, error } = await supabase - .from(tabelaTransacoes as any) + .from('transacoes') .select('*') .order('quando', { ascending: false }); @@ -53,7 +22,7 @@ export async function getTransacoes(): Promise { // Transformar os dados recebidos para o formato esperado, normalizando os tipos return data.map((item: any) => ({ id: item.id.toString(), - user: item.usuario_id || '', + user: item.user || '', created_at: item.created_at, valor: item.tipo?.toLowerCase() === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0), quando: item.quando || new Date().toISOString(), @@ -71,38 +40,10 @@ export async function getTransacoes(): Promise { export async function getTransactionSummary() { console.log("Buscando resumo das transações..."); - const userId = localStorage.getItem('userId'); - if (!userId) { - console.error('Usuário não autenticado'); - return { receitas: 0, despesas: 0, saldo: 0 }; - } - try { - // Verificar se temos uma sessão válida - const { data: sessionData, error: sessionError } = await supabase.auth.getSession(); - if (sessionError) { - console.error('Erro ao obter sessão:', sessionError); - return { receitas: 0, despesas: 0, saldo: 0 }; - } - - if (!sessionData.session) { - console.log('Sessão não encontrada, tentando atualizar...'); - - // Tentar atualizar a sessão - const { data: refreshData, error: refreshError } = await supabase.auth.refreshSession(); - - if (refreshError || !refreshData.session) { - console.error('Não foi possível atualizar a sessão:', refreshError); - return { receitas: 0, despesas: 0, saldo: 0 }; - } - - console.log('Sessão atualizada com sucesso'); - } - - const tabelaTransacoes = `transacoes_${userId}`; - + // With RLS disabled, we can query the fixed table directly const { data, error } = await supabase - .from(tabelaTransacoes as any) + .from('transacoes') .select('tipo, valor'); if (error) { @@ -137,39 +78,10 @@ export async function getTransactionSummary() { export async function getCategorySummary() { console.log("Buscando resumo de categorias..."); - const userId = localStorage.getItem('userId'); - if (!userId) { - console.error('Usuário não autenticado'); - return []; - } - try { - // Verificar se temos uma sessão válida - const { data: sessionData, error: sessionError } = await supabase.auth.getSession(); - if (sessionError) { - console.error('Erro ao obter sessão:', sessionError); - return []; - } - - if (!sessionData.session) { - console.log('Sessão não encontrada, tentando atualizar...'); - - // Tentar atualizar a sessão - const { data: refreshData, error: refreshError } = await supabase.auth.refreshSession(); - - if (refreshError || !refreshData.session) { - console.error('Não foi possível atualizar a sessão:', refreshError); - return []; - } - - console.log('Sessão atualizada com sucesso'); - } - - const tabelaTransacoes = `transacoes_${userId}`; - - // Buscar todas as transações que são despesas, independente da capitalização + // With RLS disabled, we can query the fixed table directly const { data, error } = await supabase - .from(tabelaTransacoes as any) + .from('transacoes') .select('categoria, valor, tipo'); if (error) { @@ -223,38 +135,10 @@ export async function getCategorySummary() { export async function getMonthlyData() { console.log("Buscando dados mensais..."); - const userId = localStorage.getItem('userId'); - if (!userId) { - console.error('Usuário não autenticado'); - return []; - } - try { - // Verificar se temos uma sessão válida - const { data: sessionData, error: sessionError } = await supabase.auth.getSession(); - if (sessionError) { - console.error('Erro ao obter sessão:', sessionError); - return []; - } - - if (!sessionData.session) { - console.log('Sessão não encontrada, tentando atualizar...'); - - // Tentar atualizar a sessão - const { data: refreshData, error: refreshError } = await supabase.auth.refreshSession(); - - if (refreshError || !refreshData.session) { - console.error('Não foi possível atualizar a sessão:', refreshError); - return []; - } - - console.log('Sessão atualizada com sucesso'); - } - - const tabelaTransacoes = `transacoes_${userId}`; - + // With RLS disabled, we can query the fixed table directly const { data, error } = await supabase - .from(tabelaTransacoes as any) + .from('transacoes') .select('quando, valor, tipo'); if (error) {