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) => ( handleQuickLogin(testUser)} disabled={isLoading} className="flex flex-col items-start h-auto py-2 px-3" > {testUser.icon} {testUser.label} {testUser.description} ))} {t('login.testCredentials')} {TEST_USERS.map((user) => ( {user.role} {user.email} / {user.password} ))} )} {t('loginPage.email')} setEmail(e.target.value)} required placeholder={isDevelopment ? 'admin@turash.dev' : 'your@email.com'} /> {t('loginPage.password')} setPassword(e.target.value)} required placeholder={isDevelopment ? 'admin123' : '••••••••'} /> {error && ( {error} )} {isLoading ? t('loginPage.loading') : t('loginPage.login')} {!isDevelopment && {t('loginPage.demoNote')}} {t('loginPage.noAccount', "Don't have an account?")}{' '} {t('loginPage.signupLink')} ); }; export default LoginPage;
{t('login.quickLogin')}
{t('login.testCredentials')}