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) {