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

View File

@ -21,35 +21,18 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => {
// Check if we have stored authentication status // Check if we have stored authentication status
const storedAuth = localStorage.getItem('autenticado') === 'true'; const storedAuth = localStorage.getItem('autenticado') === 'true';
const userId = localStorage.getItem('userId');
if (storedAuth) { if (storedAuth && userId) {
console.log('Using stored authentication status: authenticated'); console.log('Usando autenticação armazenada: autenticado');
setIsAuthenticated(true); 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 { } else {
// For RLS disabled mode, we set a default authentication console.log('Nenhuma sessão encontrada, redirecionando para login');
console.log('No session found, but setting as authenticated for RLS disabled mode'); setIsAuthenticated(false);
setIsAuthenticated(true);
localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', 'default');
} }
} catch (error) { } catch (error) {
console.error('Error checking authentication:', error); console.error('Erro ao verificar autenticação:', error);
// For RLS disabled, default to authenticated setIsAuthenticated(false);
setIsAuthenticated(true);
localStorage.setItem('autenticado', 'true');
localStorage.setItem('userId', 'default');
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
@ -58,12 +41,21 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => {
checkAuthentication(); checkAuthentication();
}, []); }, []);
// Show loading state // Mostrar estado de carregamento
if (isLoading) { if (isLoading) {
return <div className="flex items-center justify-center min-h-screen">Carregando...</div>; 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}</>; return <>{children}</>;
}; };

View File

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