Remove demo mode
Removes demo mode to ensure proper Supabase functionality.
This commit is contained in:
@@ -14,22 +14,6 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
useEffect(() => {
|
||||
// 데모 모드 사용자 체크
|
||||
const checkDemoUser = () => {
|
||||
const demoUser = localStorage.getItem('demo_user');
|
||||
if (demoUser) {
|
||||
try {
|
||||
const parsedUser = JSON.parse(demoUser) as User;
|
||||
setUser(parsedUser);
|
||||
// 데모 모드에서는 session이 null이지만 user는 있을 수 있음
|
||||
setSession(null);
|
||||
} catch (error) {
|
||||
console.error('데모 사용자 파싱 오류:', error);
|
||||
localStorage.removeItem('demo_user');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 현재 세션 체크
|
||||
const getSession = async () => {
|
||||
try {
|
||||
@@ -37,19 +21,12 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
|
||||
if (error) {
|
||||
console.error('세션 로딩 중 오류:', error);
|
||||
// 실제 세션 로드 실패 시 데모 모드 사용자 확인
|
||||
checkDemoUser();
|
||||
} else if (data.session) {
|
||||
setSession(data.session);
|
||||
setUser(data.session.user);
|
||||
} else {
|
||||
// 세션이 없을 때 데모 모드 사용자 확인
|
||||
checkDemoUser();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('세션 확인 중 예외 발생:', error);
|
||||
// 예외 발생 시 데모 모드 사용자 확인
|
||||
checkDemoUser();
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -63,18 +40,11 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
console.log('Supabase auth 이벤트:', event);
|
||||
|
||||
if (session) {
|
||||
// 실제 세션이 있으면 데모 모드 사용자 제거
|
||||
localStorage.removeItem('demo_user');
|
||||
setSession(session);
|
||||
setUser(session.user);
|
||||
} else if (event === 'SIGNED_OUT') {
|
||||
// 로그아웃 시 데모 모드 사용자도 제거
|
||||
localStorage.removeItem('demo_user');
|
||||
setSession(null);
|
||||
setUser(null);
|
||||
} else {
|
||||
// 세션이 없을 때 데모 모드 사용자 확인
|
||||
checkDemoUser();
|
||||
}
|
||||
|
||||
setLoading(false);
|
||||
@@ -87,25 +57,6 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
};
|
||||
}, []);
|
||||
|
||||
// signOut 메소드 재정의 - 데모 모드 지원
|
||||
const handleSignOut = async () => {
|
||||
// 데모 모드 사용자 체크
|
||||
const demoUser = localStorage.getItem('demo_user');
|
||||
if (demoUser) {
|
||||
localStorage.removeItem('demo_user');
|
||||
setUser(null);
|
||||
setSession(null);
|
||||
toast({
|
||||
title: '로그아웃 성공',
|
||||
description: '다음에 또 만나요!',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 실제 Supabase 로그아웃
|
||||
await authActions.signOut();
|
||||
};
|
||||
|
||||
// 인증 작업 메서드들
|
||||
const value: AuthContextType = {
|
||||
session,
|
||||
@@ -113,7 +64,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
||||
loading,
|
||||
signIn: authActions.signIn,
|
||||
signUp: authActions.signUp,
|
||||
signOut: handleSignOut,
|
||||
signOut: authActions.signOut,
|
||||
resetPassword: authActions.resetPassword,
|
||||
};
|
||||
|
||||
|
||||
@@ -6,31 +6,8 @@ export const signIn = async (email: string, password: string) => {
|
||||
try {
|
||||
console.log('로그인 시도 중:', email);
|
||||
|
||||
// 데모 모드: 실제 API 호출 대신 직접 성공 응답 반환
|
||||
// 실제 환경에서는 이 코드를 제거하고 아래의 주석 처리된 코드를 사용하세요
|
||||
toast({
|
||||
title: '데모 모드 로그인',
|
||||
description: '데모 모드에서는 실제 로그인이 처리되지 않습니다.',
|
||||
});
|
||||
const { data, error } = await supabase.auth.signInWithPassword({ email, password });
|
||||
|
||||
// 성공 메시지
|
||||
toast({
|
||||
title: '로그인 성공',
|
||||
description: '환영합니다!',
|
||||
});
|
||||
|
||||
// 가짜 사용자 세션 생성
|
||||
localStorage.setItem('demo_user', JSON.stringify({
|
||||
id: 'demo-user-id',
|
||||
email: email,
|
||||
user_metadata: { username: email.split('@')[0] },
|
||||
created_at: new Date().toISOString()
|
||||
}));
|
||||
|
||||
return { error: null };
|
||||
|
||||
/* 실제 Supabase 코드 - 데모 모드가 아닐 때 사용
|
||||
const { error } = await supabase.auth.signInWithPassword({ email, password });
|
||||
if (error) {
|
||||
console.error('로그인 오류:', error);
|
||||
toast({
|
||||
@@ -45,8 +22,8 @@ export const signIn = async (email: string, password: string) => {
|
||||
title: '로그인 성공',
|
||||
description: '환영합니다!',
|
||||
});
|
||||
return { error: null };
|
||||
*/
|
||||
|
||||
return { error: null, user: data.user };
|
||||
} catch (error: any) {
|
||||
console.error('로그인 중 예외 발생:', error);
|
||||
|
||||
@@ -68,32 +45,6 @@ export const signUp = async (email: string, password: string, username: string)
|
||||
try {
|
||||
console.log('회원가입 시도:', { email, username });
|
||||
|
||||
// 데모 모드에서는 회원가입 성공으로 처리합니다.
|
||||
// 실제 환경에서는 이 부분을 제거하고 아래의 supabase.auth.signUp 호출을 사용하세요.
|
||||
const mockUser = {
|
||||
id: 'mock-user-id',
|
||||
email,
|
||||
user_metadata: { username },
|
||||
created_at: new Date().toISOString()
|
||||
};
|
||||
|
||||
// 데모 알림 표시
|
||||
toast({
|
||||
title: '데모 모드 알림',
|
||||
description: '현재 데모 모드에서 실행 중입니다. 실제 계정이 생성되지 않습니다.',
|
||||
});
|
||||
|
||||
// 성공 메시지 표시
|
||||
toast({
|
||||
title: '회원가입 성공',
|
||||
description: '환영합니다! 이제 서비스를 이용할 수 있습니다.',
|
||||
});
|
||||
|
||||
return { error: null, user: mockUser };
|
||||
|
||||
// 아래는 실제 Supabase 회원가입 코드입니다.
|
||||
// 데모 모드가 아닌 경우 이 코드를 사용하세요.
|
||||
/*
|
||||
const { data, error } = await supabase.auth.signUp({
|
||||
email,
|
||||
password,
|
||||
@@ -120,7 +71,6 @@ export const signUp = async (email: string, password: string, username: string)
|
||||
});
|
||||
|
||||
return { error: null, user: data.user };
|
||||
*/
|
||||
} catch (error: any) {
|
||||
console.error('회원가입 중 예외 발생:', error);
|
||||
|
||||
|
||||
@@ -2,14 +2,31 @@
|
||||
import { createClient } from '@supabase/supabase-js';
|
||||
|
||||
// 온프레미스 Supabase URL과 anon key 설정
|
||||
const supabaseUrl = process.env.SUPABASE_URL || 'http://your-onpremise-supabase-url.com';
|
||||
// 온프레미스 anon key 설정
|
||||
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY || 'your-onpremise-anon-key';
|
||||
const getSupabaseUrl = () => {
|
||||
// 로컬 스토리지에서 설정된 URL을 우선 사용
|
||||
const storedUrl = localStorage.getItem('supabase_url');
|
||||
if (storedUrl) return storedUrl;
|
||||
|
||||
// 환경 변수 또는 기본값 사용
|
||||
return process.env.SUPABASE_URL || 'http://your-onpremise-supabase-url.com';
|
||||
};
|
||||
|
||||
const getSupabaseKey = () => {
|
||||
// 로컬 스토리지에서 설정된 키를 우선 사용
|
||||
const storedKey = localStorage.getItem('supabase_key');
|
||||
if (storedKey) return storedKey;
|
||||
|
||||
// 환경 변수 또는 기본값 사용
|
||||
return process.env.SUPABASE_ANON_KEY || 'your-onpremise-anon-key';
|
||||
};
|
||||
|
||||
const supabaseUrl = getSupabaseUrl();
|
||||
const supabaseAnonKey = getSupabaseKey();
|
||||
|
||||
// 유효한 URL이 설정되었는지 확인
|
||||
const isValidUrl = supabaseUrl && supabaseAnonKey &&
|
||||
!supabaseUrl.includes('YOUR_SUPABASE_URL') &&
|
||||
!supabaseAnonKey.includes('YOUR_SUPABASE_ANON_KEY');
|
||||
!supabaseUrl.includes('your-onpremise-supabase-url') &&
|
||||
!supabaseAnonKey.includes('your-onpremise-anon-key');
|
||||
|
||||
let supabaseClient;
|
||||
|
||||
@@ -45,7 +62,7 @@ try {
|
||||
|
||||
// 유효성 검사 로그
|
||||
if (!isValidUrl) {
|
||||
console.warn('경고: 유효하지 않은 Supabase URL 또는 Anon Key가 감지되었습니다.');
|
||||
console.warn('경고: 기본 Supabase URL 또는 Anon Key가 감지되었습니다. Supabase 설정 페이지에서 온프레미스 설정을 구성하세요.');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Supabase 클라이언트 생성 오류:', error);
|
||||
@@ -79,4 +96,3 @@ export const configureSupabase = (url: string, key: string) => {
|
||||
// 페이지 새로고침 - 새로운 설정으로 Supabase 클라이언트 초기화
|
||||
window.location.reload();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user