Skip to content

Commit 0a164b0

Browse files
committed
feat: テストログインボタン追加
1 parent 6c2abd4 commit 0a164b0

1 file changed

Lines changed: 38 additions & 3 deletions

File tree

app/login/page.tsx

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import api from "@/lib/axios";
1818
import { GolfIcon } from "@/components/ui/GolfIcon";
1919
import { RotateCcw } from "lucide-react";
2020

21-
/** ログインページ */
2221
export default function LoginPage() {
2322
const [email, setEmail] = useState("");
2423
const [password, setPassword] = useState("");
@@ -27,7 +26,6 @@ export default function LoginPage() {
2726
const [resetting, setResetting] = useState(false);
2827
const [resetMessage, setResetMessage] = useState("");
2928

30-
// デモデータリセット(全データを初期状態に戻す)
3129
async function handleDemoReset() {
3230
if (resetting) return;
3331

@@ -55,7 +53,6 @@ export default function LoginPage() {
5553
}
5654
}
5755

58-
// ログイン処理(成功後、roleに応じて管理者/スタッフ画面に遷移)
5956
async function handleSubmit(e: React.FormEvent) {
6057
e.preventDefault();
6158
setError("");
@@ -74,6 +71,22 @@ export default function LoginPage() {
7471
setError("メールアドレスまたはパスワードが正しくありません");
7572
}
7673
}
74+
75+
async function handleTestLogin(role: "admin" | "staff") {
76+
setError("");
77+
try {
78+
const credentials =
79+
role === "admin"
80+
? { email: "admin@gmail.com", password: "admin" }
81+
: { email: "staff@gmail.com", password: "staff" };
82+
83+
const response = await api.post("/api/login", credentials);
84+
localStorage.setItem("token", response.data.token);
85+
router.push(role === "admin" ? "/admin" : "/staff");
86+
} catch (err) {
87+
setError("ログインに失敗しました。デモデータをリセットしてください。");
88+
}
89+
}
7790
return (
7891
<div className="min-h-screen bg-page-gradient flex items-center justify-center p-4">
7992
<Card className="w-full max-w-md">
@@ -124,6 +137,28 @@ export default function LoginPage() {
124137
ログイン
125138
</Button>
126139
</form>
140+
141+
<div className="mt-4 space-y-2">
142+
<p className="text-xs text-muted-foreground text-center">
143+
テストログイン
144+
</p>
145+
<div className="flex gap-2">
146+
<Button
147+
variant="outline"
148+
className="flex-1"
149+
onClick={() => handleTestLogin("admin")}
150+
>
151+
管理者
152+
</Button>
153+
<Button
154+
variant="outline"
155+
className="flex-1"
156+
onClick={() => handleTestLogin("staff")}
157+
>
158+
スタッフ
159+
</Button>
160+
</div>
161+
</div>
127162
</CardContent>
128163
<div className="px-6 pb-6">
129164
<div className="p-3 bg-amber-50 border-2 border-amber-200 rounded-lg">

0 commit comments

Comments
 (0)