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:
@@ -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 };
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user