@@ -18,7 +18,6 @@ import api from "@/lib/axios";
1818import { GolfIcon } from "@/components/ui/GolfIcon" ;
1919import { RotateCcw } from "lucide-react" ;
2020
21- /** ログインページ */
2221export 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