"use client"; import { useState } from "react"; import axios from "axios"; import { useRouter } from "next/navigation"; import { Lock, User, Shield } from "lucide-react"; export default function LoginPage() { const router = useRouter(); const [loginRole, setLoginRole] = useState("user"); const [nrp, setNrp] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(""); try { const response = await axios.post("http://172.17.172.17:8080/api/auth/login", { nrp_nip: nrp, password: password, }); const { token, user } = response.data; // Simpan di localStorage untuk kebutuhan frontend localStorage.setItem("token", token); localStorage.setItem("user", JSON.stringify(user)); // 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`; // Logika Pengalihan Halaman if (user.role === "admin" && loginRole === "admin") { router.push("/admin/monitoring"); // Langsung arahkan ke halaman utama admin } else if (user.role === "student" && loginRole === "user") { router.push("/dashboard"); } else { setError("Role tidak sesuai dengan tipe akun Anda."); localStorage.clear(); document.cookie = "token=; path=/; max-age=0;"; document.cookie = "userRole=; path=/; max-age=0;"; } } catch (err: any) { setError(err.response?.data?.error || "Gagal terhubung ke server"); } finally { setLoading(false); } }; return (

S-CLASS

Smart Classroom Booking System

{error && (
{error}
)}
{loginRole === "admin" ? : }
setNrp(e.target.value)} />
setPassword(e.target.value)} />
© 2026 Skripsi S-CLASS Project
); }