35 lines
1.5 KiB
JavaScript
Executable File
35 lines
1.5 KiB
JavaScript
Executable File
"use client";
|
|
import { useState } from "react";
|
|
import { API_BASE } from "@/lib/api";
|
|
|
|
export default function LoginPage() {
|
|
const [email, setEmail] = useState("");
|
|
const [password, setPassword] = useState("");
|
|
const [err, setErr] = useState("");
|
|
|
|
async function onSubmit(e){
|
|
e.preventDefault();
|
|
setErr("");
|
|
const res = await fetch(`${API_BASE}/auth/login`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ email, password }),
|
|
credentials: "include",
|
|
});
|
|
if (!res.ok) { setErr("เข้าสู่ระบบไม่สำเร็จ"); return; }
|
|
location.href = "/dashboard";
|
|
}
|
|
|
|
return (
|
|
<div className="grid place-items-center min-h-screen">
|
|
<form onSubmit={onSubmit} className="bg-white/90 rounded-2xl p-6 w-full max-w-sm shadow">
|
|
<div className="text-lg font-semibold mb-4">เข้าสู่ระบบ</div>
|
|
<input className="w-full border rounded-xl p-2 mb-2" placeholder="อีเมล" value={email} onChange={e=>setEmail(e.target.value)} />
|
|
<input type="password" className="w-full border rounded-xl p-2 mb-3" placeholder="รหัสผ่าน" value={password} onChange={e=>setPassword(e.target.value)} />
|
|
{err && <div className="text-red-600 text-sm mb-2">{err}</div>}
|
|
<button className="w-full rounded-xl p-2 text-white" style={{background:'#0D5C75'}}>เข้าสู่ระบบ</button>
|
|
</form>
|
|
</div>
|
|
);
|
|
}
|