Improve sign-in API handling

Improve sign-in API handling to ensure successful login.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-15 15:33:30 +00:00
parent 44b4e456dd
commit 03fcc7175c
3 changed files with 22 additions and 33 deletions

View File

@@ -9,31 +9,25 @@ export const signInWithDirectApi = async (email: string, password: string) => {
console.log('직접 API 호출로 로그인 시도'); console.log('직접 API 호출로 로그인 시도');
try { try {
// 로그인 API 엔드포인트 URL과 헤더 준비 // 로그인 API 엔드포인트 URL 준비
const supabaseUrl = supabase.auth.url; const supabaseUrl = localStorage.getItem('supabase_url') || 'http://a11.ism.kr';
// URL 경로 중복 방지를 위해 경로 확인 및 정규화 const supabaseKey = localStorage.getItem('supabase_key') || supabase.supabaseKey;
const baseUrl = supabaseUrl?.endsWith('/auth/v1')
? supabaseUrl
: `${supabaseUrl}/auth/v1`;
// URL에 중복 '/auth/v1' 경로가 있는지 확인하고 수정 // URL에 auth/v1이 이미 포함되어있는지 확인
const normalizedUrl = baseUrl.includes('/auth/v1/auth/v1') const baseUrl = supabaseUrl.includes('/auth/v1') ? supabaseUrl : `${supabaseUrl}/auth/v1`;
? baseUrl.replace('/auth/v1/auth/v1', '/auth/v1')
: baseUrl;
const tokenUrl = `${normalizedUrl}/token?grant_type=password`; // 토큰 엔드포인트 경로
const headers = { const tokenUrl = `${baseUrl}/token?grant_type=password`;
'Content-Type': 'application/json',
'Authorization': `Bearer ${supabase.supabaseKey}`,
'X-Client-Info': 'supabase-js/2.x'
};
console.log('로그인 API 요청 URL:', tokenUrl); console.log('로그인 API 요청 URL:', tokenUrl);
// 로그인 요청 보내기 // 로그인 요청 보내기
const response = await fetch(tokenUrl, { const response = await fetch(tokenUrl, {
method: 'POST', method: 'POST',
headers, headers: {
'Content-Type': 'application/json',
'apikey': supabaseKey
},
body: JSON.stringify({ email, password }) body: JSON.stringify({ email, password })
}); });
@@ -53,12 +47,15 @@ export const signInWithDirectApi = async (email: string, password: string) => {
console.warn('API 경로를 찾을 수 없음 (404). 새 엔드포인트 시도 중...'); console.warn('API 경로를 찾을 수 없음 (404). 새 엔드포인트 시도 중...');
// 대체 엔드포인트 시도 (/token 대신 /signin) // 대체 엔드포인트 시도 (/token 대신 /signin)
const signinUrl = `${normalizedUrl}/signin`; const signinUrl = `${baseUrl}/signin`;
try { try {
const signinResponse = await fetch(signinUrl, { const signinResponse = await fetch(signinUrl, {
method: 'POST', method: 'POST',
headers, headers: {
'Content-Type': 'application/json',
'apikey': supabaseKey
},
body: JSON.stringify({ email, password }) body: JSON.stringify({ email, password })
}); });

View File

@@ -9,25 +9,17 @@ export const signUpWithDirectApi = async (email: string, password: string, usern
try { try {
console.log('직접 API 호출로 회원가입 시도 중'); console.log('직접 API 호출로 회원가입 시도 중');
const supabaseUrl = supabase.auth.url; const supabaseUrl = localStorage.getItem('supabase_url') || 'http://a11.ism.kr';
const supabaseKey = localStorage.getItem('supabase_key') || supabase.supabaseKey; const supabaseKey = localStorage.getItem('supabase_key') || supabase.supabaseKey;
// URL 경로 중복 방지를 위해 경로 확인 및 정규화 // URL에 auth/v1이 이미 포함되어있는지 확인
const baseUrl = supabaseUrl?.endsWith('/auth/v1') const baseUrl = supabaseUrl.includes('/auth/v1') ? supabaseUrl : `${supabaseUrl}/auth/v1`;
? supabaseUrl
: `${supabaseUrl}/auth/v1`;
// URL에 중복 '/auth/v1' 경로가 있는지 확인하고 수정
const normalizedUrl = baseUrl.includes('/auth/v1/auth/v1')
? baseUrl.replace('/auth/v1/auth/v1', '/auth/v1')
: baseUrl;
// 회원가입 API 엔드포인트 및 헤더 설정 // 회원가입 API 엔드포인트 및 헤더 설정
const signUpUrl = `${normalizedUrl}/signup`; const signUpUrl = `${baseUrl}/signup`;
const headers = { const headers = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'apikey': supabaseKey, 'apikey': supabaseKey
'X-Client-Info': 'supabase-js/2.x'
}; };
console.log('회원가입 API 요청 URL:', signUpUrl); console.log('회원가입 API 요청 URL:', signUpUrl);

View File

@@ -50,7 +50,7 @@ export const getSupabaseUrl = () => {
} }
// 기본값 사용 (환경 변수 대신) // 기본값 사용 (환경 변수 대신)
return 'http://a11.ism.kr:8000'; return 'http://a11.ism.kr';
}; };
export const getSupabaseKey = () => { export const getSupabaseKey = () => {