Fix: Authentication issues

Fixes login and password entry issues.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-19 12:59:29 +00:00
parent e288c9262d
commit f3b00231de
3 changed files with 54 additions and 37 deletions

View File

@ -9,18 +9,40 @@ import Auth from '@/pages/Auth';
import Metas from '@/pages/Metas';
import { Toaster } from '@/components/ui/toaster';
import './App.css';
import ProtectedRoute from '@/components/auth/ProtectedRoute';
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Navigate to="/dashboard" replace />} />
<Route path="/dashboard" element={<Index />} />
<Route path="/transacoes" element={<Transacoes />} />
<Route path="/categorias" element={<Categorias />} />
<Route path="/calendario" element={<Calendario />} />
<Route path="/metas" element={<Metas />} />
<Route path="/dashboard" element={
<ProtectedRoute>
<Index />
</ProtectedRoute>
} />
<Route path="/transacoes" element={
<ProtectedRoute>
<Transacoes />
</ProtectedRoute>
} />
<Route path="/categorias" element={
<ProtectedRoute>
<Categorias />
</ProtectedRoute>
} />
<Route path="/calendario" element={
<ProtectedRoute>
<Calendario />
</ProtectedRoute>
} />
<Route path="/metas" element={
<ProtectedRoute>
<Metas />
</ProtectedRoute>
} />
<Route path="/login" element={<Auth />} />
<Route path="/auth" element={<Auth />} />
<Route path="*" element={<NotFound />} />
</Routes>
<Toaster />

View File

@ -21,35 +21,18 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => {
// Check if we have stored authentication status
const storedAuth = localStorage.getItem('autenticado') === 'true';
const userId = localStorage.getItem('userId');
if (storedAuth) {
console.log('Using stored authentication status: authenticated');
if (storedAuth && userId) {
console.log('Usando autenticação armazenada: autenticado');
setIsAuthenticated(true);
setIsLoading(false);
return;
}
// If no stored status, check for a session
const { data: sessionData } = await supabase.auth.getSession();
if (sessionData?.session) {
console.log('Session found, setting as authenticated');
setIsAuthenticated(true);
localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', sessionData.session.user.id);
} else {
// For RLS disabled mode, we set a default authentication
console.log('No session found, but setting as authenticated for RLS disabled mode');
setIsAuthenticated(true);
localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', 'default');
console.log('Nenhuma sessão encontrada, redirecionando para login');
setIsAuthenticated(false);
}
} catch (error) {
console.error('Error checking authentication:', error);
// For RLS disabled, default to authenticated
setIsAuthenticated(true);
localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', 'default');
console.error('Erro ao verificar autenticação:', error);
setIsAuthenticated(false);
} finally {
setIsLoading(false);
}
@ -58,12 +41,21 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => {
checkAuthentication();
}, []);
// Show loading state
// Mostrar estado de carregamento
if (isLoading) {
return <div className="flex items-center justify-center min-h-screen">Carregando...</div>;
}
// With RLS disabled, we simply return the children without redirecting
// Se não estiver autenticado, redirecionar para a página de login
if (isAuthenticated === false) {
toast({
title: "Autenticação necessária",
description: "Por favor, faça login para acessar esta página"
});
return <Navigate to="/auth" state={{ from: location }} replace />;
}
// Se estiver autenticado, renderizar o conteúdo protegido
return <>{children}</>;
};

View File

@ -40,20 +40,20 @@ const Auth = () => {
throw new Error(error?.message || "Falha ao autenticar. Verifique seu email e senha.");
}
// Se encontrou um usuário válido, redireciona para a página de transações
// Se encontrou um usuário válido
if (data) {
// Armazenar informações de sessão (simplificado para este exemplo)
// Armazenar informações de sessão
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!"
});
navigate('/transacoes');
// Redirecionamento para o dashboard após login bem-sucedido
navigate('/dashboard');
} else {
toast({
title: "Falha no login",
@ -127,7 +127,10 @@ const Auth = () => {
localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', loginData);
localStorage.setItem('userEmail', email);
navigate('/transacoes');
localStorage.setItem('userName', nome);
// Redirecionamento para o dashboard após cadastro bem-sucedido
navigate('/dashboard');
}
}
} catch (error: any) {