import { MainLayout } from '@/components/layout/MainLayout'; import PageHeader from '@/components/layout/PageHeader'; import { Badge } from '@/components/ui'; import Button from '@/components/ui/Button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card'; import Input from '@/components/ui/Input'; import { useAuth } from '@/contexts/AuthContext'; import { useTranslation } from '@/hooks/useI18n'; import { useNavigation } from '@/hooks/useNavigation'; import { Eye, FileText, Shield, User } from 'lucide-react'; import React, { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; const isDevelopment = import.meta.env.DEV; // Test user credentials for development const TEST_USERS = [ { email: 'admin@turash.dev', password: 'admin123', role: 'admin', label: 'Admin', icon: , description: 'Full admin panel access', }, { email: 'user@turash.dev', password: 'user12345', role: 'user', label: 'User', icon: , description: 'Regular user dashboard', }, { email: 'content@turash.dev', password: 'content123', role: 'content_manager', label: 'Content Manager', icon: , description: 'Content and localization', }, { email: 'viewer@turash.dev', password: 'viewer123', role: 'viewer', label: 'Viewer', icon: , description: 'Read-only access', }, ] as const; const LoginPage = () => { const { t } = useTranslation(); const { login, isLoading, user } = useAuth(); const { handleFooterNavigate } = useNavigation(); const navigate = useNavigate(); const [email, setEmail] = useState(isDevelopment ? 'admin@turash.dev' : ''); const [password, setPassword] = useState(isDevelopment ? 'admin123' : ''); const [error, setError] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); try { await login(email, password); // Navigation will happen after user state is updated // We'll use useEffect to handle navigation } catch (err) { setError(err instanceof Error ? err.message : 'Login failed'); } }; const handleQuickLogin = async (testUser: (typeof TEST_USERS)[number]) => { setError(''); setEmail(testUser.email); setPassword(testUser.password); try { await login(testUser.email, testUser.password); // Navigation will happen after user state is updated } catch (err) { setError(err instanceof Error ? err.message : 'Login failed'); } }; // Navigate after successful login useEffect(() => { if (user && !isLoading) { if (user.role === 'admin') { navigate('/admin'); } else { navigate('/dashboard'); } } }, [user, isLoading, navigate]); return (
{t('loginPage.subtitle')} {isDevelopment && (

{t('login.quickLogin')}

{TEST_USERS.map((testUser) => ( ))}

{t('login.testCredentials')}

{TEST_USERS.map((user) => (
{user.role} {user.email} / {user.password}
))}
)}
setEmail(e.target.value)} required placeholder={isDevelopment ? 'admin@turash.dev' : 'your@email.com'} />
setPassword(e.target.value)} required placeholder={isDevelopment ? 'admin123' : '••••••••'} />
{error && (
{error}
)}
{!isDevelopment &&
{t('loginPage.demoNote')}
}
{t('loginPage.noAccount', "Don't have an account?")}{' '} {t('loginPage.signupLink')}
); }; export default LoginPage;