import { useState } from "react"; import logo from "../../assets/logo.png"; import { useNavigate } from "react-router-dom"; import { Mail, Lock, Eye, EyeOff } from 'lucide-react'; import api from "../../lib/api"; const decodeJWT = (token: string) => { try { const base64 = token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/"); const padded = base64.padEnd(base64.length + (4 - base64.length % 4) % 4, "="); return JSON.parse(atob(padded)); } catch { return null; } }; export default function InternifyLogin() { const navigate = useNavigate(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const handleSignIn = async (e: React.FormEvent) => { e.preventDefault(); setError(""); if (!email || !password) { setError("Email dan password wajib diisi."); return; } try { setLoading(true); const response = await api.post("/auth-api/login", { email, password }); const { token } = response.data.data; document.cookie = `token=${token}; path=/; SameSite=Strict`; const decoded = decodeJWT(token); const role = decoded?.role; if (role === "intern") { navigate("/intern"); } else if (role === "admin") { navigate("/mentor"); } else { setError("Role user tidak dikenali."); } } catch (err: any) { if (err.response?.status === 401 || err.response?.status === 400) { setError("Email atau password salah."); } else { setError("Terjadi kesalahan. Coba beberapa saat lagi."); } } finally { setLoading(false); } }; return (
HUMIC LMS PORTAL
Access your dashboard with your credentials.
{/* Forgot Password */} {/* Divider & Support */}© 2026 Internify. CoE Humic Engineering.