'use client' import React, { useState, useEffect } from 'react' import Link from 'next/link' import Image from 'next/image' import { useRouter } from 'next/navigation' import useUserStore from '@/app/store/userStore' import Loader from '@/components/ui/Loader' import { useForm } from '@/app/hooks/useForm' import Button from '@/components/ui/Button' import showToast from '@/components/ui/ShowToast' import { signIn } from 'next-auth/react' import TextInput from '@/components/ui/TextInput' import RoleSelector from '@/components/selectors/RoleSelector' const validationRules = { login: { required: true }, password: { required: true }, } const LoginPage = () => { const router = useRouter() const { isAuthenticated } = useUserStore() const [isLoading, setIsLoading] = useState(true) useEffect(() => { // проверяем логин if (isAuthenticated) { // распределяем router.replace('/objects') return } const timer = setTimeout(() => { setIsLoading(false) }, 300) return () => clearTimeout(timer) }, [isAuthenticated, router]) const { values, isVisible, handleChange, handleSubmit, togglePasswordVisibility } = useForm( { login: '', password: '', role: '', }, validationRules, async values => { try { const result = await signIn('credentials', { login: values.login, password: values.password, redirect: false, role: values.role, }) if (result?.error) { showToast({ type: 'error', message: result.error }) return } showToast({ type: 'success', message: 'Авторизация успешна!' }) router.push('/objects') } catch { showToast({ type: 'error', message: 'Ошибка при входе в аккаунт' }) } } ) if (isLoading) { return } const interSemiboldStyle = { fontFamily: 'Inter, sans-serif', fontWeight: 600 } const interRegularStyle = { fontFamily: 'Inter, sans-serif', fontWeight: 400 } return (
{/* Фоновый градиент - многоуровневый */}
{/* Второй слой градиента */}
{/* Основные светящиеся орбиты */}
{/* Дополнительные акцентные элементы */}
{/* Сетка с градиентом */}
{/* Диагональные линии */}
{/* Центральный светящийся элемент */}
{/* Верхний логотип */}
AerBIM Logo
{/* Карточка формы с улучшенным стилем */}
{/* Верхний градиент на карточке */}

Авторизация

Забыли логин/пароль?

) } export default LoginPage