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.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-19 11:52:23 +00:00
parent 032f171d7f
commit 416074060d
2 changed files with 29 additions and 7 deletions

View File

@ -45,6 +45,10 @@ const Auth = () => {
// Armazenar informações de sessão (simplificado para este exemplo) // Armazenar informações de sessão (simplificado para este exemplo)
localStorage.setItem('autenticado', 'true'); localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', data); localStorage.setItem('userId', data);
// Armazenamos também o email para identificação do usuário
localStorage.setItem('userEmail', loginEmail);
toast({ toast({
title: "Login realizado com sucesso", title: "Login realizado com sucesso",
description: "Bem-vindo de volta!" description: "Bem-vindo de volta!"
@ -122,6 +126,7 @@ const Auth = () => {
if (loginData) { if (loginData) {
localStorage.setItem('autenticado', 'true'); localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', loginData); localStorage.setItem('userId', loginData);
localStorage.setItem('userEmail', email);
navigate('/transacoes'); navigate('/transacoes');
} }
} }

View File

@ -5,11 +5,16 @@ import { Transaction } from "@/types/financialTypes";
export async function getTransacoes(): Promise<Transaction[]> { export async function getTransacoes(): Promise<Transaction[]> {
console.log("Buscando transações do Supabase..."); 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 { try {
// With RLS disabled, we can query the fixed table directly // Buscar transações filtrando pelo usuário atual
const { data, error } = await supabase const { data, error } = await supabase
.from('transacoes') .from('transacoes')
.select('*') .select('*')
.eq('user', userId) // Filtrar pelo ID do usuário
.order('quando', { ascending: false }); .order('quando', { ascending: false });
if (error) { if (error) {
@ -40,11 +45,15 @@ export async function getTransacoes(): Promise<Transaction[]> {
export async function getTransactionSummary() { export async function getTransactionSummary() {
console.log("Buscando resumo das transações..."); console.log("Buscando resumo das transações...");
// Obter o ID do usuário atual do localStorage
const userId = localStorage.getItem('userId') || 'default';
try { try {
// With RLS disabled, we can query the fixed table directly // Buscar resumo filtrando pelo usuário atual
const { data, error } = await supabase const { data, error } = await supabase
.from('transacoes') .from('transacoes')
.select('tipo, valor'); .select('tipo, valor')
.eq('user', userId); // Filtrar pelo ID do usuário
if (error) { if (error) {
console.error('Erro ao buscar resumo das transações:', error); console.error('Erro ao buscar resumo das transações:', error);
@ -78,11 +87,15 @@ export async function getTransactionSummary() {
export async function getCategorySummary() { export async function getCategorySummary() {
console.log("Buscando resumo de categorias..."); console.log("Buscando resumo de categorias...");
// Obter o ID do usuário atual do localStorage
const userId = localStorage.getItem('userId') || 'default';
try { 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 const { data, error } = await supabase
.from('transacoes') .from('transacoes')
.select('categoria, valor, tipo'); .select('categoria, valor, tipo')
.eq('user', userId); // Filtrar pelo ID do usuário
if (error) { if (error) {
console.error('Erro ao buscar resumo de categorias:', error); console.error('Erro ao buscar resumo de categorias:', error);
@ -135,11 +148,15 @@ export async function getCategorySummary() {
export async function getMonthlyData() { export async function getMonthlyData() {
console.log("Buscando dados mensais..."); console.log("Buscando dados mensais...");
// Obter o ID do usuário atual do localStorage
const userId = localStorage.getItem('userId') || 'default';
try { try {
// With RLS disabled, we can query the fixed table directly // Buscar dados mensais filtrando pelo usuário atual
const { data, error } = await supabase const { data, error } = await supabase
.from('transacoes') .from('transacoes')
.select('quando, valor, tipo'); .select('quando, valor, tipo')
.eq('user', userId); // Filtrar pelo ID do usuário
if (error) { if (error) {
console.error('Erro ao buscar dados mensais:', error); console.error('Erro ao buscar dados mensais:', error);