'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Loader2, Eye, EyeOff } from "lucide-react"; import { ThemeProvider } from '@/components/theme-provider'; import { Toaster } from '@/components/ui/toaster'; export default function LandingPage() { const router = useRouter(); const [isLoginOpen, setIsLoginOpen] = useState(true); const [isRegisterOpen, setIsRegisterOpen] = useState(false); const [activeTab, setActiveTab] = useState('dosen'); const [loading, setLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(''); // Admin form state const [adminForm, setAdminForm] = useState({ username: '', password: '' }); // Dosen form state const [dosenForm, setDosenForm] = useState({ nip: '', password: '' }); // Register form state const [registerForm, setRegisterForm] = useState({ nip: '', password: '', confirmPassword: '' }); const handleAdminLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); try { const response = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username: adminForm.username, password: adminForm.password, role: 'admin' }), }); const data = await response.json(); if (response.ok) { setIsLoginOpen(false); router.push('/dashboard'); } else { setError(data.error || 'Login gagal'); } } catch (err) { setError('Terjadi kesalahan saat login'); } finally { setLoading(false); } }; const handleDosenLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); try { const response = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ nip: dosenForm.nip, password: dosenForm.password, role: 'dosen' }), }); const data = await response.json(); if (response.ok) { setIsLoginOpen(false); router.push('/dashboard'); } else { setError(data.error || 'Login gagal'); } } catch (err) { setError('Terjadi kesalahan saat login'); } finally { setLoading(false); } }; const handleRegister = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); if (registerForm.password !== registerForm.confirmPassword) { setError('Password dan konfirmasi password tidak cocok'); setLoading(false); return; } try { const response = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ nip: registerForm.nip, password: registerForm.password }), }); const data = await response.json(); if (response.ok) { setIsRegisterOpen(false); setIsLoginOpen(true); setActiveTab('dosen'); setError(''); } else { setError(data.error || 'Registrasi gagal'); } } catch (err) { setError('Terjadi kesalahan saat registrasi'); } finally { setLoading(false); } }; const openRegister = () => { setIsLoginOpen(false); setIsRegisterOpen(true); }; const openLogin = () => { setIsRegisterOpen(false); setIsLoginOpen(true); }; return (
{/* Login Dialog */} {}}> Login Portal Data Informatika Silakan login sesuai dengan role Anda Dosen Admin
setDosenForm({ ...dosenForm, nip: e.target.value })} required />
setDosenForm({ ...dosenForm, password: e.target.value })} required />

Belum punya akun?{' '}

setAdminForm({ ...adminForm, username: e.target.value })} required />
setAdminForm({ ...adminForm, password: e.target.value })} required />
{error && ( {error} )}
{/* Register Dialog */} {}}> Registrasi Dosen Daftar akun baru untuk dosen Portal Data Informatika
setRegisterForm({ ...registerForm, nip: e.target.value })} required />
setRegisterForm({ ...registerForm, password: e.target.value })} required />
setRegisterForm({ ...registerForm, confirmPassword: e.target.value })} required />

Sudah punya akun?{' '}

{error && ( {error} )}
); }