From 0a164b017c6ebc0ef1e5ddfce6c09a3d6380fd29 Mon Sep 17 00:00:00 2001 From: kwnt-dev Date: Sun, 15 Mar 2026 21:49:38 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=86=E3=82=B9=E3=83=88=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E3=82=A4=E3=83=B3=E3=83=9C=E3=82=BF=E3=83=B3=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/login/page.tsx | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/app/login/page.tsx b/app/login/page.tsx index 6f3ddce..a176072 100644 --- a/app/login/page.tsx +++ b/app/login/page.tsx @@ -18,7 +18,6 @@ import api from "@/lib/axios"; import { GolfIcon } from "@/components/ui/GolfIcon"; import { RotateCcw } from "lucide-react"; -/** ログインページ */ export default function LoginPage() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); @@ -27,7 +26,6 @@ export default function LoginPage() { const [resetting, setResetting] = useState(false); const [resetMessage, setResetMessage] = useState(""); - // デモデータリセット(全データを初期状態に戻す) async function handleDemoReset() { if (resetting) return; @@ -55,7 +53,6 @@ export default function LoginPage() { } } - // ログイン処理(成功後、roleに応じて管理者/スタッフ画面に遷移) async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(""); @@ -74,6 +71,22 @@ export default function LoginPage() { setError("メールアドレスまたはパスワードが正しくありません"); } } + + async function handleTestLogin(role: "admin" | "staff") { + setError(""); + try { + const credentials = + role === "admin" + ? { email: "admin@gmail.com", password: "admin" } + : { email: "staff@gmail.com", password: "staff" }; + + const response = await api.post("/api/login", credentials); + localStorage.setItem("token", response.data.token); + router.push(role === "admin" ? "/admin" : "/staff"); + } catch (err) { + setError("ログインに失敗しました。デモデータをリセットしてください。"); + } + } return (
@@ -124,6 +137,28 @@ export default function LoginPage() { ログイン + +
+

+ テストログイン +

+
+ + +
+