Refactor code
The prompt asked to refactor the code.
This commit is contained in:
@@ -4,7 +4,6 @@ import { useNavigate } from "react-router-dom";
|
|||||||
import { useToast } from "@/hooks/useToast.wrapper";
|
import { useToast } from "@/hooks/useToast.wrapper";
|
||||||
import { useAuth } from "@/contexts/auth";
|
import { useAuth } from "@/contexts/auth";
|
||||||
import { useTableSetup } from "@/hooks/useTableSetup";
|
import { useTableSetup } from "@/hooks/useTableSetup";
|
||||||
import { getLoginErrorMessage, showLoginErrorToast, showLoginSuccessToast } from "@/utils/auth/loginUtils";
|
|
||||||
|
|
||||||
export function useLogin() {
|
export function useLogin() {
|
||||||
const [email, setEmail] = useState("");
|
const [email, setEmail] = useState("");
|
||||||
@@ -34,51 +33,55 @@ export function useLogin() {
|
|||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// API 호출 전에 URL 유효성 확인
|
|
||||||
const supabaseUrl = localStorage.getItem('supabase_url');
|
|
||||||
if (!supabaseUrl || supabaseUrl.trim() === '') {
|
|
||||||
toast({
|
|
||||||
title: "설정 오류",
|
|
||||||
description: "Supabase URL이 설정되지 않았습니다. 설정 페이지에서 구성하세요.",
|
|
||||||
variant: "destructive"
|
|
||||||
});
|
|
||||||
setIsLoading(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { error, user } = await signIn(email, password);
|
const { error, user } = await signIn(email, password);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
console.error("로그인 실패:", error);
|
console.error("로그인 실패:", error);
|
||||||
const errorMessage = getLoginErrorMessage(error);
|
|
||||||
setLoginError(errorMessage);
|
|
||||||
showLoginErrorToast(errorMessage);
|
|
||||||
|
|
||||||
// 404 오류인 경우 경로 설정 확인 제안
|
let errorMessage = "로그인에 실패했습니다.";
|
||||||
if (errorMessage.includes('404') || errorMessage.includes('Not Found')) {
|
|
||||||
toast({
|
if (error.message) {
|
||||||
title: "서버 연결 문제",
|
if (error.message.includes("Invalid login credentials")) {
|
||||||
description: "Supabase URL 설정을 확인하세요. 서버 주소가 올바른지 확인하세요.",
|
errorMessage = "이메일 또는 비밀번호가 올바르지 않습니다.";
|
||||||
variant: "destructive"
|
} else if (error.message.includes("Email not confirmed")) {
|
||||||
});
|
errorMessage = "이메일 인증이 완료되지 않았습니다. 이메일을 확인해주세요.";
|
||||||
|
} else {
|
||||||
|
errorMessage = `오류: ${error.message}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setLoginError(errorMessage);
|
||||||
|
|
||||||
|
toast({
|
||||||
|
title: "로그인 실패",
|
||||||
|
description: errorMessage,
|
||||||
|
variant: "destructive"
|
||||||
|
});
|
||||||
} else if (user) {
|
} else if (user) {
|
||||||
// 로그인 성공
|
// 로그인 성공
|
||||||
showLoginSuccessToast();
|
toast({
|
||||||
|
title: "로그인 성공",
|
||||||
|
description: "환영합니다! 대시보드로 이동합니다.",
|
||||||
|
variant: "default"
|
||||||
|
});
|
||||||
|
|
||||||
await setupTables();
|
await setupTables();
|
||||||
navigate("/");
|
navigate("/");
|
||||||
} else {
|
} else {
|
||||||
// user가 없지만 error도 없는 경우 (드문 경우)
|
// user가 없지만 error도 없는 경우 (드문 경우)
|
||||||
console.warn("로그인 성공했지만 사용자 정보가 없습니다.");
|
console.warn("로그인 성공했지만 사용자 정보가 없습니다.");
|
||||||
|
|
||||||
toast({
|
toast({
|
||||||
title: "로그인 상태 확인 중",
|
title: "로그인 상태 확인 중",
|
||||||
description: "로그인은 성공했지만 사용자 정보를 확인하지 못했습니다. 페이지를 새로고침해보세요.",
|
description: "로그인은 성공했지만 사용자 정보를 확인하지 못했습니다. 페이지를 새로고침해보세요.",
|
||||||
variant: "default"
|
variant: "default"
|
||||||
});
|
});
|
||||||
|
|
||||||
navigate("/");
|
navigate("/");
|
||||||
}
|
}
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
console.error("로그인 과정에서 예외 발생:", err);
|
console.error("로그인 과정에서 예외 발생:", err);
|
||||||
|
|
||||||
const errorMessage = err.message || "알 수 없는 오류가 발생했습니다.";
|
const errorMessage = err.message || "알 수 없는 오류가 발생했습니다.";
|
||||||
setLoginError(errorMessage);
|
setLoginError(errorMessage);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user