🚀 Auto-deploy: Acesso direto implementado (Bypass Auth) e correção de chamadas .auth
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user