"use client"; import { useState } from "react"; import Link from "next/link"; import MainLogo from "@/app/svgs/mainlogosvg" import LoginCheckboxActiveSvg from "@/app/svgs/logincheckboxactivesvg"; import LoginCheckboxInactiveSvg from "@/app/svgs/logincheckboxinactivesvg"; import LoginInputSvg from "@/app/svgs/inputformx"; import LoginErrorModal from "./LoginErrorModal"; import LoginOption from "@/app/login/LoginOption"; export default function LoginPage() { const [userId, setUserId] = useState(""); const [password, setPassword] = useState(""); const [rememberId, setRememberId] = useState(false); const [autoLogin, setAutoLogin] = useState(false); const [isUserIdFocused, setIsUserIdFocused] = useState(false); const [isPasswordFocused, setIsPasswordFocused] = useState(false); const [isLoginErrorOpen, setIsLoginErrorOpen] = useState(false); const [idError, setIdError] = useState(""); const [passwordError, setPasswordError] = useState(""); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (userId.trim().length === 0 || password.trim().length === 0) { return; } try { const response = await fetch("https://hrdi.coconutmeet.net/auth/login", { method: "POST", headers: {"Content-Type": "application/json",}, body: JSON.stringify({ email: userId, password: password }) }); if (!response.ok) { let errorMessage = `로그인 실패 (${response.status})`; try { const errorData = await response.json(); if (errorData.error) { errorMessage = errorData.error; } else if (errorData.message) { errorMessage = errorData.message; } else if (response.statusText) { errorMessage = `${response.statusText} (${response.status})`; } } catch (parseError) { if (response.statusText) { errorMessage = `${response.statusText} (${response.status})`; } } console.error("로그인 실패:", errorMessage); setIsLoginErrorOpen(true); return; } const data = await response.json(); console.log("로그인 성공:", data); // 로그인 성공 시 처리 (예: 토큰 저장, 리다이렉트 등) // TODO: 성공 시 처리 로직 추가 (예: localStorage에 토큰 저장, 메인 페이지로 이동 등) // if (data.token) { // localStorage.setItem('token', data.token); // window.location.href = '/menu'; // } } catch (error) { const errorMessage = error instanceof Error ? error.message : "네트워크 오류가 발생했습니다."; console.error("로그인 오류:", errorMessage); setIsLoginErrorOpen(true); } } return (
setIsLoginErrorOpen(false)} /> setIsLoginErrorOpen(true)} loginErrorModalEnabled={isLoginErrorOpen} setLoginErrorModalEnabled={setIsLoginErrorOpen} />
{/* 로고 영역 */}
XR LMS
{/* 폼 */}
{/* 아이디 */}
setUserId(e.target.value)} onFocus={() => setIsUserIdFocused(true)} onBlur={() => setIsUserIdFocused(false)} placeholder="아이디 (이메일)" className=" h-[40px] px-[12px] py-[7px] w-full rounded-[8px] border border-neutral-40 focus:outline-none focus:ring-0 focus:ring-offset-0 focus:shadow-none focus:appearance-none focus:border-neutral-700 text-[18px] text-neutral-700 font-normal leading-[150%] placeholder:text-input-placeholder-text pr-[40px] " /> {userId.trim().length > 0 && isUserIdFocused && ( )}
{/* 비밀번호 */}
setPassword(e.target.value)} onFocus={() => setIsPasswordFocused(true)} onBlur={() => setIsPasswordFocused(false)} placeholder="비밀번호" className=" h-[40px] px-[12px] py-[7px] rounded-[8px] w-full border border-neutral-40 focus:outline-none focus:ring-0 focus:ring-offset-0 focus:shadow-none focus:appearance-none focus:border-neutral-700 text-[18px] text-neutral-700 font-normal leading-[150%] placeholder:text-input-placeholder-text pr-[40px] " /> {password.trim().length > 0 && isPasswordFocused && ( )}
{/* 체크박스들 */}
{/* 로그인 버튼 */} {/* 하단 링크들 */}
회원가입
아이디 찾기 비밀번호 재설정

Copyright ⓒ 2025 XL LMS. All rights reserved

); }