From 416074060dd0c99967870ef4c6182a9ba10e3b50 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 11:52:23 +0000 Subject: [PATCH] Implement user-specific data separation Configure the application to associate each user with a distinct database or data scope, ensuring that users like Rodrigo and Rejane access only their own transactions and data, preventing shared data access. --- src/pages/Auth.tsx | 5 +++++ src/services/transacaoService.ts | 31 ++++++++++++++++++++++++------- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/pages/Auth.tsx b/src/pages/Auth.tsx index 44eaa85..7d32065 100644 --- a/src/pages/Auth.tsx +++ b/src/pages/Auth.tsx @@ -45,6 +45,10 @@ const Auth = () => { // Armazenar informações de sessão (simplificado para este exemplo) localStorage.setItem('autenticado', 'true'); localStorage.setItem('userId', data); + + // Armazenamos também o email para identificação do usuário + localStorage.setItem('userEmail', loginEmail); + toast({ title: "Login realizado com sucesso", description: "Bem-vindo de volta!" @@ -122,6 +126,7 @@ const Auth = () => { if (loginData) { localStorage.setItem('autenticado', 'true'); localStorage.setItem('userId', loginData); + localStorage.setItem('userEmail', email); navigate('/transacoes'); } } diff --git a/src/services/transacaoService.ts b/src/services/transacaoService.ts index 0d7173b..bd8cb6b 100644 --- a/src/services/transacaoService.ts +++ b/src/services/transacaoService.ts @@ -5,11 +5,16 @@ import { Transaction } from "@/types/financialTypes"; export async function getTransacoes(): Promise { console.log("Buscando transações do Supabase..."); + // Obter o ID do usuário atual do localStorage + const userId = localStorage.getItem('userId') || 'default'; + console.log("Buscando transações para o usuário:", userId); + try { - // With RLS disabled, we can query the fixed table directly + // Buscar transações filtrando pelo usuário atual const { data, error } = await supabase .from('transacoes') .select('*') + .eq('user', userId) // Filtrar pelo ID do usuário .order('quando', { ascending: false }); if (error) { @@ -40,11 +45,15 @@ export async function getTransacoes(): Promise { export async function getTransactionSummary() { console.log("Buscando resumo das transações..."); + // Obter o ID do usuário atual do localStorage + const userId = localStorage.getItem('userId') || 'default'; + try { - // With RLS disabled, we can query the fixed table directly + // Buscar resumo filtrando pelo usuário atual const { data, error } = await supabase .from('transacoes') - .select('tipo, valor'); + .select('tipo, valor') + .eq('user', userId); // Filtrar pelo ID do usuário if (error) { console.error('Erro ao buscar resumo das transações:', error); @@ -78,11 +87,15 @@ export async function getTransactionSummary() { export async function getCategorySummary() { console.log("Buscando resumo de categorias..."); + // Obter o ID do usuário atual do localStorage + const userId = localStorage.getItem('userId') || 'default'; + try { - // With RLS disabled, we can query the fixed table directly + // Buscar resumo de categorias filtrando pelo usuário atual const { data, error } = await supabase .from('transacoes') - .select('categoria, valor, tipo'); + .select('categoria, valor, tipo') + .eq('user', userId); // Filtrar pelo ID do usuário if (error) { console.error('Erro ao buscar resumo de categorias:', error); @@ -135,11 +148,15 @@ export async function getCategorySummary() { export async function getMonthlyData() { console.log("Buscando dados mensais..."); + // Obter o ID do usuário atual do localStorage + const userId = localStorage.getItem('userId') || 'default'; + try { - // With RLS disabled, we can query the fixed table directly + // Buscar dados mensais filtrando pelo usuário atual const { data, error } = await supabase .from('transacoes') - .select('quando, valor, tipo'); + .select('quando, valor, tipo') + .eq('user', userId); // Filtrar pelo ID do usuário if (error) { console.error('Erro ao buscar dados mensais:', error);