'use client' import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { authService } from '@/src/services/api'; import { trackEvent } from '@/src/components/MatomoAnalytics'; export default function AdminLogin() { const router = useRouter(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); // Redirect to dashboard if already authenticated useEffect(() => { const token = localStorage.getItem('authToken'); const expiry = localStorage.getItem('tokenExpiry'); if (token && expiry && Date.now() < parseInt(expiry)) { window.location.href = '/dashboard'; } }, []); // Set dark mode by default useEffect(() => { document.documentElement.classList.add('dark'); }, []); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); try { const response = await authService.login(username, password); // Store token in localStorage localStorage.setItem('authToken', response.token); localStorage.setItem('tokenExpiry', String(Date.now() + 24 * 60 * 60 * 1000)); // 24 hours // Track successful login trackEvent('Admin', 'Login', 'Success'); // Redirect to admin dashboard using window.location for static export window.location.href = '/dashboard'; } catch (err: any) { setError('Neispravno korisničko ime ili lozinka'); console.error('Login error:', err); trackEvent('Admin', 'Login', 'Failed'); } finally { setLoading(false); } }; return (
Prijavite se za upravljanje filamentima