Refactor auth utils for Cloud

Simplify signUpUtils.ts and signInUtils.ts by removing unnecessary code related to CORS proxies, optimizing for Supabase Cloud environment.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-18 06:15:28 +00:00
parent 30730c5cd0
commit 613f6a49d7
6 changed files with 225 additions and 646 deletions

View File

@@ -1,70 +1,45 @@
import { supabase } from '@/integrations/supabase/client';
import {
handleNetworkError,
parseResponse,
showAuthToast,
verifyServerConnection
} from '@/utils/auth';
import { signInWithDirectApi } from './signInUtils';
import { getProxyType, isCorsProxyEnabled } from '@/lib/supabase/config';
import { supabase } from '@/lib/supabase';
import { showAuthToast } from '@/utils/auth';
/**
* 로그인 기능 - Supabase Cloud 환경에 최적화
*/
export const signIn = async (email: string, password: string) => {
try {
console.log('로그인 시도 중:', email);
// 기본 Supabase 인증 방식 시도
try {
const { data, error } = await supabase.auth.signInWithPassword({
email,
password
});
// Supabase 인증 방식 시도
const { data, error } = await supabase.auth.signInWithPassword({
email,
password
});
if (!error && data.user) {
showAuthToast('로그인 성공', '환영합니다!');
return { error: null, user: data.user };
} else if (error) {
console.error('로그인 오류:', error.message);
if (!error && data.user) {
showAuthToast('로그인 성공', '환영합니다!');
return { error: null, user: data.user };
} else if (error) {
console.error('Supabase 기본 로그인 오류:', error.message);
let errorMessage = error.message;
if (error.message.includes('Invalid login credentials')) {
errorMessage = '이메일 또는 비밀번호가 올바르지 않습니다.';
} else if (error.message.includes('Email not confirmed')) {
errorMessage = '이메일 인증이 완료되지 않았습니다. 이메일을 확인해주세요.';
}
showAuthToast('로그인 실패', errorMessage, 'destructive');
return { error: { message: errorMessage }, user: null };
let errorMessage = error.message;
if (error.message.includes('Invalid login credentials')) {
errorMessage = '이메일 또는 비밀번호가 올바르지 않습니다.';
} else if (error.message.includes('Email not confirmed')) {
errorMessage = '이메일 인증이 완료되지 않았습니다. 이메일을 확인해주세요.';
}
} catch (basicAuthError: any) {
console.warn('Supabase 기본 인증 방식 예외 발생:', basicAuthError);
throw basicAuthError;
showAuthToast('로그인 실패', errorMessage, 'destructive');
return { error: { message: errorMessage }, user: null };
}
// 여기까지 왔다면 모든 로그인 시도가 실패한 것
// 여기까지 왔다면 오류가 발생한 것
showAuthToast('로그인 실패', '로그인 처리 중 오류가 발생했습니다.', 'destructive');
return { error: { message: '로그인 처리 중 오류가 발생했습니다.' }, user: null };
} catch (error: any) {
console.error('로그인 중 예외 발생:', error);
// 프록시 설정 확인 및 추천
const usingProxy = isCorsProxyEnabled();
const proxyType = getProxyType();
// 네트워크 오류 확인
let errorMessage = handleNetworkError(error);
// CORS 또는 네트워크 오류인 경우 Cloudflare 프록시 추천
if (errorMessage.includes('CORS') || errorMessage.includes('네트워크') || errorMessage.includes('연결')) {
if (!usingProxy) {
errorMessage = `${errorMessage} (설정에서 Cloudflare CORS 프록시 활성화를 권장합니다)`;
} else if (proxyType !== 'cloudflare') {
errorMessage = `${errorMessage} (설정에서 Cloudflare CORS 프록시로 변경을 권장합니다)`;
}
}
const errorMessage = error.message || '로그인 중 오류가 발생했습니다.';
showAuthToast('로그인 오류', errorMessage, 'destructive');
return { error: { message: errorMessage }, user: null };
}
};