/** * Компонент страницы входа * @module LoginPage */ import { useNavigate } from '@solidjs/router' import { Component, createSignal, onMount } from 'solid-js' import { login, isAuthenticated } from './auth' /** * Компонент страницы входа */ const LoginPage: Component = () => { const [email, setEmail] = createSignal('') const [password, setPassword] = createSignal('') const [isLoading, setIsLoading] = createSignal(false) const [error, setError] = createSignal(null) const navigate = useNavigate() /** * Проверка авторизации при загрузке компонента * и перенаправление если пользователь уже авторизован */ onMount(() => { // Если пользователь уже авторизован, перенаправляем на админ-панель if (isAuthenticated()) { window.location.href = '/admin' } }) /** * Обработчик отправки формы входа * @param e - Событие отправки формы */ const handleSubmit = async (e: Event) => { e.preventDefault() // Очищаем пробелы в email const cleanEmail = email().trim() if (!cleanEmail || !password()) { setError('Пожалуйста, заполните все поля') return } setIsLoading(true) setError(null) try { // Используем функцию login из модуля auth const loginSuccessful = await login({ email: cleanEmail, password: password() }) if (loginSuccessful) { // Используем прямое перенаправление для надежности window.location.href = '/admin' } else { throw new Error('Вход не выполнен') } } catch (err) { console.error('Ошибка при входе:', err) setError(err instanceof Error ? err.message : 'Неизвестная ошибка') setIsLoading(false) } } return (
) } export default LoginPage