diff --git a/src/app/admin/login/page.tsx b/src/app/admin/login/page.tsx index 77ecc47..8c2a080 100644 --- a/src/app/admin/login/page.tsx +++ b/src/app/admin/login/page.tsx @@ -1,18 +1,98 @@ "use client"; -import { useEffect } from "react"; +import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; -export default function AdminLoginRedirect() { +export default function AdminLoginPage() { const router = useRouter(); + const [username, setUsername] = useState(""); + const [password, setPassword] = useState(""); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + // Check if already logged in useEffect(() => { - router.replace("/admin-login"); + const token = localStorage.getItem("admin_token"); + if (token) { + router.push("/admin"); + } }, [router]); + const handleLogin = async (e: React.FormEvent) => { + e.preventDefault(); + if (!username || !password) return; + + setLoading(true); + setError(""); + + try { + const res = await fetch("/api/admin/auth", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ username, password }), + }); + + const data = await res.json(); + + if (res.ok && data.success) { + localStorage.setItem("admin_token", data.token); + localStorage.setItem("admin_user", JSON.stringify({ username: data.username, role: data.role })); + router.push("/admin"); + } else { + setError(data.error || "Invalid credentials"); + } + } catch (err) { + setError("Login failed"); + } finally { + setLoading(false); + } + }; + return ( -
-
Redirecting...
+
+
+

Admin Login

+ +
+
+ + setUsername(e.target.value)} + className="w-full p-3 bg-gray-700 border border-gray-600 rounded-xl text-white" + required + /> +
+ +
+ + setPassword(e.target.value)} + className="w-full p-3 bg-gray-700 border border-gray-600 rounded-xl text-white" + required + /> +
+ + {error && ( +

{error}

+ )} + + +
+ +

+ Default: admin / admin123 +

+
); } \ No newline at end of file