Fix: Authentication issues
Fixes login and password entry issues.
This commit is contained in:
parent
e288c9262d
commit
f3b00231de
32
src/App.tsx
32
src/App.tsx
@ -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 />
|
||||
|
||||
@ -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}</>;
|
||||
};
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user