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);
|
const [loading, setLoading] = useState(true);
|
||||||
|
|
||||||
useEffect(() => {
|
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 () => {
|
const getSession = async () => {
|
||||||
try {
|
try {
|
||||||
@@ -37,19 +21,12 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
|||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
console.error('세션 로딩 중 오류:', error);
|
console.error('세션 로딩 중 오류:', error);
|
||||||
// 실제 세션 로드 실패 시 데모 모드 사용자 확인
|
|
||||||
checkDemoUser();
|
|
||||||
} else if (data.session) {
|
} else if (data.session) {
|
||||||
setSession(data.session);
|
setSession(data.session);
|
||||||
setUser(data.session.user);
|
setUser(data.session.user);
|
||||||
} else {
|
|
||||||
// 세션이 없을 때 데모 모드 사용자 확인
|
|
||||||
checkDemoUser();
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('세션 확인 중 예외 발생:', error);
|
console.error('세션 확인 중 예외 발생:', error);
|
||||||
// 예외 발생 시 데모 모드 사용자 확인
|
|
||||||
checkDemoUser();
|
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
@@ -63,18 +40,11 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
|||||||
console.log('Supabase auth 이벤트:', event);
|
console.log('Supabase auth 이벤트:', event);
|
||||||
|
|
||||||
if (session) {
|
if (session) {
|
||||||
// 실제 세션이 있으면 데모 모드 사용자 제거
|
|
||||||
localStorage.removeItem('demo_user');
|
|
||||||
setSession(session);
|
setSession(session);
|
||||||
setUser(session.user);
|
setUser(session.user);
|
||||||
} else if (event === 'SIGNED_OUT') {
|
} else if (event === 'SIGNED_OUT') {
|
||||||
// 로그아웃 시 데모 모드 사용자도 제거
|
|
||||||
localStorage.removeItem('demo_user');
|
|
||||||
setSession(null);
|
setSession(null);
|
||||||
setUser(null);
|
setUser(null);
|
||||||
} else {
|
|
||||||
// 세션이 없을 때 데모 모드 사용자 확인
|
|
||||||
checkDemoUser();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setLoading(false);
|
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 = {
|
const value: AuthContextType = {
|
||||||
session,
|
session,
|
||||||
@@ -113,7 +64,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
|
|||||||
loading,
|
loading,
|
||||||
signIn: authActions.signIn,
|
signIn: authActions.signIn,
|
||||||
signUp: authActions.signUp,
|
signUp: authActions.signUp,
|
||||||
signOut: handleSignOut,
|
signOut: authActions.signOut,
|
||||||
resetPassword: authActions.resetPassword,
|
resetPassword: authActions.resetPassword,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,31 +6,8 @@ export const signIn = async (email: string, password: string) => {
|
|||||||
try {
|
try {
|
||||||
console.log('로그인 시도 중:', email);
|
console.log('로그인 시도 중:', email);
|
||||||
|
|
||||||
// 데모 모드: 실제 API 호출 대신 직접 성공 응답 반환
|
const { data, error } = await supabase.auth.signInWithPassword({ email, password });
|
||||||
// 실제 환경에서는 이 코드를 제거하고 아래의 주석 처리된 코드를 사용하세요
|
|
||||||
toast({
|
|
||||||
title: '데모 모드 로그인',
|
|
||||||
description: '데모 모드에서는 실제 로그인이 처리되지 않습니다.',
|
|
||||||
});
|
|
||||||
|
|
||||||
// 성공 메시지
|
|
||||||
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) {
|
if (error) {
|
||||||
console.error('로그인 오류:', error);
|
console.error('로그인 오류:', error);
|
||||||
toast({
|
toast({
|
||||||
@@ -45,8 +22,8 @@ export const signIn = async (email: string, password: string) => {
|
|||||||
title: '로그인 성공',
|
title: '로그인 성공',
|
||||||
description: '환영합니다!',
|
description: '환영합니다!',
|
||||||
});
|
});
|
||||||
return { error: null };
|
|
||||||
*/
|
return { error: null, user: data.user };
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('로그인 중 예외 발생:', error);
|
console.error('로그인 중 예외 발생:', error);
|
||||||
|
|
||||||
@@ -68,32 +45,6 @@ export const signUp = async (email: string, password: string, username: string)
|
|||||||
try {
|
try {
|
||||||
console.log('회원가입 시도:', { email, username });
|
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({
|
const { data, error } = await supabase.auth.signUp({
|
||||||
email,
|
email,
|
||||||
password,
|
password,
|
||||||
@@ -120,7 +71,6 @@ export const signUp = async (email: string, password: string, username: string)
|
|||||||
});
|
});
|
||||||
|
|
||||||
return { error: null, user: data.user };
|
return { error: null, user: data.user };
|
||||||
*/
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('회원가입 중 예외 발생:', error);
|
console.error('회원가입 중 예외 발생:', error);
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,31 @@
|
|||||||
import { createClient } from '@supabase/supabase-js';
|
import { createClient } from '@supabase/supabase-js';
|
||||||
|
|
||||||
// 온프레미스 Supabase URL과 anon key 설정
|
// 온프레미스 Supabase URL과 anon key 설정
|
||||||
const supabaseUrl = process.env.SUPABASE_URL || 'http://your-onpremise-supabase-url.com';
|
const getSupabaseUrl = () => {
|
||||||
// 온프레미스 anon key 설정
|
// 로컬 스토리지에서 설정된 URL을 우선 사용
|
||||||
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY || 'your-onpremise-anon-key';
|
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이 설정되었는지 확인
|
// 유효한 URL이 설정되었는지 확인
|
||||||
const isValidUrl = supabaseUrl && supabaseAnonKey &&
|
const isValidUrl = supabaseUrl && supabaseAnonKey &&
|
||||||
!supabaseUrl.includes('YOUR_SUPABASE_URL') &&
|
!supabaseUrl.includes('your-onpremise-supabase-url') &&
|
||||||
!supabaseAnonKey.includes('YOUR_SUPABASE_ANON_KEY');
|
!supabaseAnonKey.includes('your-onpremise-anon-key');
|
||||||
|
|
||||||
let supabaseClient;
|
let supabaseClient;
|
||||||
|
|
||||||
@@ -45,7 +62,7 @@ try {
|
|||||||
|
|
||||||
// 유효성 검사 로그
|
// 유효성 검사 로그
|
||||||
if (!isValidUrl) {
|
if (!isValidUrl) {
|
||||||
console.warn('경고: 유효하지 않은 Supabase URL 또는 Anon Key가 감지되었습니다.');
|
console.warn('경고: 기본 Supabase URL 또는 Anon Key가 감지되었습니다. Supabase 설정 페이지에서 온프레미스 설정을 구성하세요.');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Supabase 클라이언트 생성 오류:', error);
|
console.error('Supabase 클라이언트 생성 오류:', error);
|
||||||
@@ -79,4 +96,3 @@ export const configureSupabase = (url: string, key: string) => {
|
|||||||
// 페이지 새로고침 - 새로운 설정으로 Supabase 클라이언트 초기화
|
// 페이지 새로고침 - 새로운 설정으로 Supabase 클라이언트 초기화
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user