diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx new file mode 100644 index 00000000..ea35e142 --- /dev/null +++ b/frontend/src/pages/Login.tsx @@ -0,0 +1,59 @@ +import { useState } from 'react' +import { authApi } from '../api/mailApi' +import { useMailStore } from '../store/mailStore' + +export default function Login() { + const [username, setUsername] = useState('') + const [password, setPassword] = useState('') + const [error, setError] = useState('') + const [loading, setLoading] = useState(false) + const setToken = useMailStore(s => s.setToken) + + const submit = async (e: React.FormEvent) => { + e.preventDefault() + setError(''); setLoading(true) + try { + const data = await authApi.login(username, password) + setToken(data.access_token, data.username, data.display_name) + } catch (err: any) { + setError(err.response?.data?.detail || '로그인에 실패했습니다') + } finally { + setLoading(false) + } + } + + return ( +