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 ( +
+
+
+ +
+
지오정보기술
+
메일 서비스
+
+
+
+
+ + setUsername(e.target.value)} + placeholder="user@zioinfo.co.kr" required autoFocus + /> +
+
+ + setPassword(e.target.value)} + placeholder="비밀번호 입력" required + /> +
+ {error &&
{error}
} + +
+
zioinfo.co.kr 메일 계정으로 로그인하세요
+
+
+ ) +}