From 13c6258cbc751b82275569bbdce92a9f4d382d50 Mon Sep 17 00:00:00 2001 From: zio Date: Mon, 1 Jun 2026 22:13:00 +0900 Subject: [PATCH] feat: add frontend/src/pages/Login.tsx --- frontend/src/pages/Login.tsx | 59 ++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 frontend/src/pages/Login.tsx 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 메일 계정으로 로그인하세요
+
+
+ ) +}