"use client"; 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 export default function LoginPage() { const router = useRouter(); // State untuk menyimpan input user dan pilihan role const [loginRole, setLoginRole] = useState("user"); // "user" atau "admin" 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.110.6: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) localStorage.setItem("token", token); localStorage.setItem("user", JSON.stringify(user)); // 2. Simpan di Cookie agar bisa dibaca oleh middleware.ts Next.js document.cookie = `token=${token}; path=/; max-age=86400; SameSite=Lax`; // Redirect berdasarkan role dari backend DAN pilihan di UI if (user.role === "admin" && loginRole === "admin") { router.push("/admin"); } else if (user.role !== "admin" && loginRole === "user") { router.push("/dashboard"); // Halaman pemesanan kelas biasa } 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 } } catch (err: any) { setError(err.response?.data?.error || "Gagal terhubung ke server"); } finally { setLoading(false); } }; return (
{/* Header / Logo */}

S-CLASS

Smart Classroom Booking System

{/* --- BAGIAN BARU: Toggle Role --- */}
{/* ------------------------------- */} {/* Form Login */}
{error && (
{error}
)} {/* Input NRP / Username dinamis tergantung role */}
{loginRole === "admin" ? ( ) : ( )}
setNrp(e.target.value)} />
{/* Input Password */}
setPassword(e.target.value)} />
{/* Tombol Login */}
{/* Footer */}
© 2026 Skripsi S-CLASS Project
); }