Если аккаунт с адресом {email} существует,
на него придёт письмо со ссылкой для сброса пароля.
Ссылка действительна 1 час.
)
}
return (
<>
Восстановление пароля
Введите email аккаунта — мы пришлём ссылку для сброса пароля
>
)
}
// ── Register form ──────────────────────────────────────────────────────────────
function RegisterForm({ onSwitch }: { onSwitch: () => void }) {
const [done, setDone] = useState(false)
const [hotelName, setHotelName] = useState('')
const [address, setAddress] = useState('')
const [contact, setContact] = useState('')
const [email, setEmail] = useState('')
const [phone, setPhone] = useState('')
const [password, setPassword] = useState('')
const [showPass, setShowPass] = useState(false)
const [agreed, setAgreed] = useState(false)
const [showTerms, setShowTerms] = useState(false)
const [loading, setLoading] = useState(false)
const [errors, setErrors] = useState>({})
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
const err: Record = {}
if (!hotelName.trim()) err.hotelName = 'Введите название отеля'
if (!contact.trim()) err.contact = 'Введите контактное лицо'
if (!email.trim()) err.email = 'Введите email'
else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) err.email = 'Некорректный email'
if (password.length < 8) err.password = 'Минимум 8 символов'
else if (!/[a-zA-Zа-яА-ЯёЁ]/.test(password)) err.password = 'Пароль должен содержать хотя бы одну букву'
if (!agreed) err.agreed = 'Необходимо принять пользовательское соглашение'
setErrors(err)
if (Object.keys(err).length > 0) return
setLoading(true)
try {
await api.auth.register({ hotelName, address, contact, email, phone, password })
setDone(true)
} catch (regErr) {
const msg = regErr instanceof Error ? regErr.message : 'Ошибка регистрации'
if (msg.includes('уже существует')) {
setErrors({ email: 'Пользователь с таким email уже существует' })
} else {
setErrors({ general: msg })
}
} finally {
setLoading(false)
}
}
if (done) {
return (
Заявка отправлена!
Мы получили данные отеля {hotelName}.
На адрес {email} отправлено
письмо с подтверждением. Перейдите по ссылке в письме, чтобы активировать аккаунт.
)
}
return (
<>
Регистрация отеля
Заполните данные — мы активируем аккаунт в течение дня
Уже есть аккаунт?{' '}
{/* Модальное окно — пользовательское соглашение */}
{showTerms && (
setShowTerms(false)}
>
e.stopPropagation()}
>
Пользовательское соглашение
Редакция от 1 января 2026 г.
Настоящее Пользовательское соглашение регулирует отношения между ООО «ХотелСинк» (далее — Сервис) и пользователем, зарегистрировавшим учётную запись.
1. Предмет соглашения. Сервис предоставляет доступ к облачной PMS-системе HotelSync для управления гостиничными операциями.
2. Регистрация. Пользователь обязуется предоставить достоверные сведения при регистрации и нести ответственность за сохранность учётных данных.
3. Персональные данные. Обработка персональных данных осуществляется в соответствии с Федеральным законом № 152-ФЗ «О персональных данных».
4. Ограничение ответственности. Сервис не несёт ответственности за прямые или косвенные убытки, возникшие вследствие использования или невозможности использования платформы.
5. Изменение условий. Сервис вправе изменять условия соглашения, уведомив пользователей не менее чем за 7 дней.