diff --git a/frontend/app/login/page.tsx b/frontend/app/login/page.tsx index 59e3822..7096c94 100644 --- a/frontend/app/login/page.tsx +++ b/frontend/app/login/page.tsx @@ -3,51 +3,48 @@ import { useState } from "react"; import axios from "axios"; import { useRouter } from "next/navigation"; -import { Lock, User, Shield } from "lucide-react"; // Tambahan ikon Shield untuk Admin +import { Lock, User, Shield } from "lucide-react"; export default function LoginPage() { const router = useRouter(); - // State untuk menyimpan input user dan pilihan role - const [loginRole, setLoginRole] = useState("user"); // "user" atau "admin" + const [loginRole, setLoginRole] = useState("user"); const [nrp, setNrp] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); - // Fungsi saat tombol Login ditekan const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(""); try { - // Tembak API Backend Golang menggunakan IP Laptop const response = await axios.post("http://172.17.172.17:8080/api/auth/login", { nrp_nip: nrp, password: password, - // role_attempt: loginRole // Buka komentar ini jika backend Golang minta parameter role }); const { token, user } = response.data; - // 1. Simpan di localStorage (untuk dipakai di axios frontend) + // Simpan di localStorage untuk kebutuhan frontend localStorage.setItem("token", token); localStorage.setItem("user", JSON.stringify(user)); - // 2. Simpan di Cookie agar bisa dibaca oleh middleware.ts Next.js + // Simpan role ke cookie juga agar Middleware Next.js tahu siapa yang sedang login document.cookie = `token=${token}; path=/; max-age=86400; SameSite=Lax`; + document.cookie = `userRole=${user.role}; path=/; max-age=86400; SameSite=Lax`; - // Redirect berdasarkan role dari backend DAN pilihan di UI + // Logika Pengalihan Halaman if (user.role === "admin" && loginRole === "admin") { - router.push("/admin"); - } else if (user.role !== "admin" && loginRole === "user") { - router.push("/dashboard"); // Halaman pemesanan kelas biasa + router.push("/admin/monitoring"); // Langsung arahkan ke halaman utama admin + } else if (user.role === "student" && loginRole === "user") { + router.push("/dashboard"); } else { - // Mencegah user biasa login lewat tab admin, atau sebaliknya setError("Role tidak sesuai dengan tipe akun Anda."); - localStorage.clear(); // Bersihkan token yang terlanjur masuk - document.cookie = "token=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT"; // Hapus cookie + localStorage.clear(); + document.cookie = "token=; path=/; max-age=0;"; + document.cookie = "userRole=; path=/; max-age=0;"; } } catch (err: any) { @@ -60,13 +57,11 @@ export default function LoginPage() { return (
Smart Classroom Booking System