🚀 Auto-deploy: Acesso direto implementado (Bypass Auth) e correção de chamadas .auth

This commit is contained in:
2026-04-03 21:20:54 +00:00
parent 556a2ace41
commit 5673eb5255

View File

@@ -32,20 +32,23 @@ export const useAuth = () => {
// Verificar sessão atual
const getSession = async () => {
try {
const { data: { session }, error } = await supabaseAuth.getSession();
const { data: { session }, error } = await supabaseAuth.auth.getSession();
if (error) throw error;
console.log('✅ useAuth: Sessão recuperada:', session?.user?.email);
// Se não tiver usuário, finaliza loading imediatamente
// Se não tiver usuário, tenta fazer bypass automático para acesso direto
if (!session?.user) {
setAuthState({
user: null,
session: null,
loading: false,
error: null
});
console.log('⚠️ useAuth: Nenhuma sessão ativa');
console.log('⚠️ useAuth: Nenhuma sessão ativa. Tentando bypass automático...');
const result = await bypassLogin();
if (!result.success) {
setAuthState({
user: null,
session: null,
loading: false,
error: null
});
}
return;
}
@@ -99,7 +102,7 @@ export const useAuth = () => {
getSession();
// Escutar mudanças de autenticação
const { data: { subscription } } = supabaseAuth.onAuthStateChange(
const { data: { subscription } } = supabaseAuth.auth.onAuthStateChange(
async (event, session) => {
console.log('🔔 Auth state changed:', event, session?.user?.email);
@@ -295,7 +298,7 @@ export const useAuth = () => {
setAuthState(prev => ({ ...prev, loading: true, error: null }));
console.log('🌐 useAuth: Chamando supabaseAuth.signInWithPassword...');
const { data, error } = await supabaseAuth.signInWithPassword({
const { data, error } = await supabaseAuth.auth.signInWithPassword({
email: credentials.email,
password: credentials.password
});
@@ -326,7 +329,7 @@ export const useAuth = () => {
try {
setAuthState(prev => ({ ...prev, loading: true, error: null }));
const { data, error } = await supabaseAuth.signUp({
const { data, error } = await supabaseAuth.auth.signUp({
email: credentials.email,
password: credentials.password,
options: {
@@ -360,7 +363,7 @@ export const useAuth = () => {
});
// 2. Disparar signOut do Supabase em background (sem await para não travar a UI)
supabaseAuth.signOut().catch(err => console.warn('Erro silencioso no signOut:', err));
supabaseAuth.auth.signOut().catch(err => console.warn('Erro silencioso no signOut:', err));
// 3. Limpar estado local do hook
setAuthState({
@@ -379,7 +382,7 @@ export const useAuth = () => {
const resetPassword = async (email: string) => {
try {
const { error } = await supabaseAuth.resetPasswordForEmail(email, {
const { error } = await supabaseAuth.auth.resetPasswordForEmail(email, {
redirectTo: `${window.location.origin}/reset-password`
});
@@ -392,7 +395,7 @@ export const useAuth = () => {
const updatePassword = async (newPassword: string) => {
try {
const { error } = await supabaseAuth.updateUser({
const { error } = await supabaseAuth.auth.updateUser({
password: newPassword
});
@@ -408,7 +411,7 @@ export const useAuth = () => {
if (!authState.user) throw new Error('Usuário não autenticado');
// Atualizar metadados do usuário
const { error: authError } = await supabaseAuth.updateUser({
const { error: authError } = await supabaseAuth.auth.updateUser({
data: updates
});
@@ -433,33 +436,65 @@ export const useAuth = () => {
setAuthState(prev => ({ ...prev, error: null }));
};
// Função de bypass para desenvolvimento
// Função de bypass para desenvolvimento e acesso direto
const bypassLogin = async () => {
console.log('🚧 useAuth: Iniciando bypass de desenvolvimento...');
console.log('🚧 useAuth: Iniciando bypass de acesso direto...');
try {
setAuthState(prev => ({ ...prev, loading: true, error: null }));
// Simular um usuário autenticado
// Buscar um usuário real do banco para garantir que o app funcione com dados reais
// Usamos o cliente de serviço (bypass RLS) para encontrar o admin ou o primeiro usuário
const { data: realUsers, error: dbError } = await (supabase as any)
.from('usuarios')
.select('*')
.order('role', { ascending: true }) // Tenta pegar admin/dev primeiro
.limit(1);
if (dbError) {
console.warn('⚠️ useAuth: Erro ao buscar usuário real para bypass:', dbError);
}
const realUser = realUsers?.[0];
const userId = realUser?.id || '00000000-0000-0000-0000-000000000000';
const userEmail = realUser?.email || 'admin@tracksteel.com.br';
const userName = realUser?.nome || 'Administrador (Bypass)';
console.log(`👤 useAuth: Usando usuário para bypass: ${userName} (${userEmail})`);
// Simular um usuário autenticado do Supabase
const mockUser = {
id: 'bypass-user-' + Date.now(),
email: 'bypass@desenvolvimento.com',
id: userId,
email: userEmail,
user_metadata: {
nome: 'Usuário Bypass'
nome: userName,
full_name: userName
},
aud: 'authenticated',
role: 'authenticated',
app_metadata: {},
created_at: new Date().toISOString()
created_at: realUser?.created_at || new Date().toISOString()
};
const mockSession = {
access_token: 'mock-token',
refresh_token: 'mock-refresh',
access_token: 'mock-token-' + Date.now(),
refresh_token: 'mock-refresh-' + Date.now(),
expires_in: 3600,
token_type: 'bearer',
user: mockUser
};
// Carregar perfil completo no store global antes de liberar o loading
const { useUserStore } = await import('../stores/useUserStore');
if (realUser) {
// Se temos o usuário real, já colocamos no store
useUserStore.getState().setCurrentUser(realUser);
} else {
// Fallback: tenta buscar ou cria estado inicial
await useUserStore.getState().fetchCurrentUser(userId).catch(() => {});
}
// Atualizar estado de autenticação
setAuthState({
user: mockUser as unknown as User,
@@ -468,7 +503,7 @@ export const useAuth = () => {
error: null
});
console.log('✅ useAuth: Bypass concluído com sucesso');
console.log('✅ useAuth: Bypass de acesso direto concluído');
return { success: true, data: { user: mockUser as unknown as User, session: mockSession as unknown as Session } };
} catch (error: unknown) {
console.error('❌ useAuth: Erro no bypass:', error);