Refactor AuthContext into smaller files
Refactors the AuthContext.tsx file into smaller, more manageable files to improve code organization and maintainability. The functionality remains the same.
This commit is contained in:
134
src/contexts/auth/authActions.ts
Normal file
134
src/contexts/auth/authActions.ts
Normal file
@@ -0,0 +1,134 @@
|
||||
|
||||
import { supabase } from '@/lib/supabase';
|
||||
import { toast } from '@/hooks/useToast.wrapper';
|
||||
|
||||
export const signIn = async (email: string, password: string) => {
|
||||
try {
|
||||
const { error } = await supabase.auth.signInWithPassword({ email, password });
|
||||
if (error) {
|
||||
console.error('로그인 오류:', error);
|
||||
toast({
|
||||
title: '로그인 실패',
|
||||
description: error.message,
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error };
|
||||
}
|
||||
|
||||
toast({
|
||||
title: '로그인 성공',
|
||||
description: '환영합니다!',
|
||||
});
|
||||
return { error: null };
|
||||
} catch (error: any) {
|
||||
console.error('로그인 중 예외 발생:', error);
|
||||
toast({
|
||||
title: '로그인 오류',
|
||||
description: '예상치 못한 오류가 발생했습니다.',
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error };
|
||||
}
|
||||
};
|
||||
|
||||
export const signUp = async (email: string, password: string, username: string) => {
|
||||
try {
|
||||
// Supabase 인증으로 사용자 생성
|
||||
const { data, error } = await supabase.auth.signUp({
|
||||
email,
|
||||
password,
|
||||
options: {
|
||||
data: {
|
||||
username,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (error) {
|
||||
console.error('회원가입 오류:', error);
|
||||
toast({
|
||||
title: '회원가입 실패',
|
||||
description: error.message,
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error, user: null };
|
||||
}
|
||||
|
||||
toast({
|
||||
title: '회원가입 성공',
|
||||
description: '이메일 확인 후 로그인해주세요.',
|
||||
});
|
||||
|
||||
return { error: null, user: data.user };
|
||||
} catch (error: any) {
|
||||
console.error('회원가입 중 예외 발생:', error);
|
||||
toast({
|
||||
title: '회원가입 오류',
|
||||
description: '예상치 못한 오류가 발생했습니다.',
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error, user: null };
|
||||
}
|
||||
};
|
||||
|
||||
export const signOut = async () => {
|
||||
try {
|
||||
const { error } = await supabase.auth.signOut();
|
||||
|
||||
if (error) {
|
||||
console.error('로그아웃 오류:', error);
|
||||
toast({
|
||||
title: '로그아웃 실패',
|
||||
description: error.message,
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error };
|
||||
}
|
||||
|
||||
toast({
|
||||
title: '로그아웃 성공',
|
||||
description: '다음에 또 만나요!',
|
||||
});
|
||||
return { error: null };
|
||||
} catch (error: any) {
|
||||
console.error('로그아웃 중 예외 발생:', error);
|
||||
toast({
|
||||
title: '로그아웃 오류',
|
||||
description: '예상치 못한 오류가 발생했습니다.',
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error };
|
||||
}
|
||||
};
|
||||
|
||||
export const resetPassword = async (email: string) => {
|
||||
try {
|
||||
const { error } = await supabase.auth.resetPasswordForEmail(email, {
|
||||
redirectTo: window.location.origin + '/reset-password',
|
||||
});
|
||||
|
||||
if (error) {
|
||||
console.error('비밀번호 재설정 오류:', error);
|
||||
toast({
|
||||
title: '비밀번호 재설정 실패',
|
||||
description: error.message,
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error };
|
||||
}
|
||||
|
||||
toast({
|
||||
title: '비밀번호 재설정 이메일 전송됨',
|
||||
description: '이메일을 확인하여 비밀번호를 재설정해주세요.',
|
||||
});
|
||||
return { error: null };
|
||||
} catch (error: any) {
|
||||
console.error('비밀번호 재설정 중 예외 발생:', error);
|
||||
toast({
|
||||
title: '비밀번호 재설정 오류',
|
||||
description: '예상치 못한 오류가 발생했습니다.',
|
||||
variant: 'destructive',
|
||||
});
|
||||
return { error };
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user