Refactor useLogin hook
Refactor the useLogin hook to separate login and table setup logic for better maintainability.
This commit is contained in:
64
src/utils/auth/loginUtils.ts
Normal file
64
src/utils/auth/loginUtils.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
import { toast } from "@/hooks/useToast.wrapper";
|
||||
|
||||
/**
|
||||
* 로그인 오류 메시지를 처리하는 유틸리티 함수
|
||||
*/
|
||||
export const getLoginErrorMessage = (error: any): string => {
|
||||
let errorMessage = "로그인에 실패했습니다.";
|
||||
|
||||
// Supabase 오류 메시지 처리
|
||||
if (error.message) {
|
||||
if (error.message.includes("Invalid login credentials")) {
|
||||
errorMessage = "이메일 또는 비밀번호가 올바르지 않습니다.";
|
||||
} else if (error.message.includes("Email not confirmed")) {
|
||||
errorMessage = "이메일 인증이 완료되지 않았습니다. 이메일을 확인해주세요.";
|
||||
} else if (error.message.includes("JSON")) {
|
||||
errorMessage = "서버 응답 오류: JSON 파싱 실패. 네트워크 연결이나 CORS 설정을 확인하세요.";
|
||||
} else if (error.message.includes("CORS") || error.message.includes("프록시")) {
|
||||
errorMessage = "CORS 오류: 프록시 설정을 확인하거나 다른 프록시를 시도해보세요.";
|
||||
} else if (error.message.includes("fetch") || error.message.includes("네트워크")) {
|
||||
errorMessage = "네트워크 오류: 서버 연결에 실패했습니다.";
|
||||
} else {
|
||||
errorMessage = `오류: ${error.message}`;
|
||||
}
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
};
|
||||
|
||||
/**
|
||||
* 로그인 성공 시 사용자에게 알림을 표시합니다.
|
||||
*/
|
||||
export const showLoginSuccessToast = () => {
|
||||
toast({
|
||||
title: "로그인 성공",
|
||||
description: "환영합니다! 대시보드로 이동합니다.",
|
||||
variant: "default"
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 로그인 오류 시 사용자에게 알림을 표시합니다.
|
||||
*/
|
||||
export const showLoginErrorToast = (errorMessage: string) => {
|
||||
toast({
|
||||
title: "로그인 실패",
|
||||
description: errorMessage,
|
||||
variant: "destructive"
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* CORS 또는 JSON 관련 오류인지 확인합니다.
|
||||
*/
|
||||
export const isCorsOrJsonError = (errorMessage: string | null): boolean => {
|
||||
if (!errorMessage) return false;
|
||||
|
||||
return (
|
||||
errorMessage.includes('JSON') ||
|
||||
errorMessage.includes('CORS') ||
|
||||
errorMessage.includes('프록시') ||
|
||||
errorMessage.includes('서버 응답')
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user