/** * 로그인 모달 — 기본값 admin / admin */ import React, { useEffect, useState } from 'react'; import { loginUser, type LoginResponse } from '../utils/backendApi'; const DEFAULT_USERNAME = 'admin'; const DEFAULT_PASSWORD = 'admin'; interface Props { open: boolean; onClose: () => void; onSuccess: (session: LoginResponse) => void; } const LoginModal: React.FC = ({ open, onClose, onSuccess }) => { const [username, setUsername] = useState(DEFAULT_USERNAME); const [password, setPassword] = useState(DEFAULT_PASSWORD); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); useEffect(() => { if (!open) return; setUsername(DEFAULT_USERNAME); setPassword(DEFAULT_PASSWORD); setError(null); setLoading(false); }, [open]); if (!open) return null; const submit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); setLoading(true); try { const res = await loginUser(username.trim(), password); if (!res) { setError('로그인에 실패했습니다. 아이디와 비밀번호를 확인하세요.'); return; } onSuccess(res); onClose(); } catch (err) { setError(err instanceof Error ? err.message : '로그인에 실패했습니다.'); } finally { setLoading(false); } }; return (
e.stopPropagation()} >

로그인

로그인 시 동일 계정의 설정이 모든 기기에서 공유됩니다. 로그인하지 않으면 이 브라우저(기기)별로 설정이 저장됩니다.

{error &&

{error}

}
); }; export default LoginModal;