import React, { useState } from 'react'; import { Dialog, DialogContent, DialogActions, TextField, Button, Box, Typography, Alert, Link, IconButton, InputAdornment, Divider, } from '@mui/material'; import { Visibility, VisibilityOff, AccountCircle } from '@mui/icons-material'; import { useAuth } from '../contexts/AuthContext'; import DraggablePaper from './DraggablePaper'; import GoldenPopupDialogTitle from './GoldenPopupDialogTitle'; interface LoginDialogProps { open: boolean; onClose: () => void; onSwitchToSignUp: () => void; } const LoginDialog: React.FC = ({ open, onClose, onSwitchToSignUp }) => { const { login } = useAuth(); const [usernameOrEmail, setUsernameOrEmail] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); if (!usernameOrEmail || !password) { setError('모든 필드를 입력해주세요.'); return; } setIsLoading(true); try { await login(usernameOrEmail, password); handleClose(); } catch (err: any) { setError(err.response?.data?.error || '로그인에 실패했습니다. 아이디와 비밀번호를 확인해주세요.'); } finally { setIsLoading(false); } }; const handleClose = () => { setUsernameOrEmail(''); setPassword(''); setError(''); setShowPassword(false); onClose(); }; // 테스트 계정으로 자동 로그인 const handleTestLogin = async (username: string, password: string) => { setError(''); setIsLoading(true); try { await login(username, password); handleClose(); } catch (err: any) { setError(err.response?.data?.error || '로그인에 실패했습니다.'); } finally { setIsLoading(false); } }; return (
{error && ( {error} )} setUsernameOrEmail(e.target.value)} margin="normal" autoFocus disabled={isLoading} /> setPassword(e.target.value)} margin="normal" disabled={isLoading} InputProps={{ endAdornment: ( setShowPassword(!showPassword)} edge="end" > {showPassword ? : } ), }} /> 계정이 없으신가요?{' '} { handleClose(); onSwitchToSignUp(); }} sx={{ cursor: 'pointer' }} > 회원가입 테스트 계정
); }; export default LoginDialog;