'use client'; import { useState, useEffect, Suspense } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { confirmPasswordReset } from '@/api/auth'; const loadMaterialComponents = async () => { await Promise.all([ import('@material/web/textfield/filled-text-field.js'), import('@material/web/button/filled-button.js'), import('@material/web/button/text-button.js'), ]); }; function ResetPasswordContent() { const router = useRouter(); const searchParams = useSearchParams(); const token = searchParams.get('token'); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [success, setSuccess] = useState(false); const [componentsLoaded, setComponentsLoaded] = useState(false); useEffect(() => { loadMaterialComponents().then(() => setComponentsLoaded(true)); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!token) { setError('Отсутствует ссылка для сброса пароля. Запросите восстановление пароля снова.'); return; } if (password !== confirmPassword) { setError('Пароли не совпадают'); return; } setLoading(true); setError(''); try { await confirmPasswordReset(token, password, confirmPassword); setSuccess(true); } catch (err: any) { setError( err.response?.data?.error?.message || err.response?.data?.detail || 'Не удалось сменить пароль. Ссылка могла устареть — запросите новую.' ); } finally { setLoading(false); } }; if (!componentsLoaded) { return (

Uchill

Загрузка...

); } if (!token) { return (

Uchill

Сброс пароля

Отсутствует ссылка для сброса пароля. Перейдите по ссылке из письма или запросите восстановление пароля снова.
router.push('/forgot-password')} style={{ width: '100%', height: '48px' }}> Восстановить пароль
router.push('/login')} style={{ fontSize: '14px' }}> На страницу входа
); } if (success) { return (

Uchill

Сброс пароля

Пароль успешно изменён. Войдите с новым паролем.
router.push('/login')} style={{ width: '100%', height: '48px' }}> Войти
); } return (

Введите новый пароль

setPassword(e.target.value || '')} required style={{ width: '100%' }} />
setConfirmPassword(e.target.value || '')} required style={{ width: '100%' }} />
{error && (
{error}
)} {loading ? 'Сохранение...' : 'Сохранить пароль'}
router.push('/login')} style={{ fontSize: '14px' }}> На страницу входа
); } export default function ResetPasswordPage() { return (

Загрузка...

} > ); }