feat(auth): чекбоксы согласия с офертой и политикой при первой авторизации

Новый пользователь попадал в кабинет молча — никаких документов ему не показывали.
Теперь при создании аккаунта он подтверждает, что ознакомился с офертой и политикой.

Набор документов и сам факт включения гейта приходят с бэка
(GET /cabinet/info/legal-consent): там же учитывается, заполнены ли документы и
видны ли они в вебе. Фронт знает только ключи и адреса публичных страниц /offer
и /privacy — тех же, что уже линкует футер логина.

Два пути входа устроены по-разному, поэтому и UI разный:
- регистрация по email — чекбоксы прямо в форме, кнопка заблокирована до галочек;
- Telegram-вход происходит сам собой, спрашивать заранее не у чего. Поэтому ловим
  428 от бэка и показываем отдельный экран согласия, а замыкание помнит, какой
  именно вход повторить после простановки галочек. Тот же приём страхует и
  email-форму: конфиг мог протухнуть, если админ включил гейт между загрузкой
  страницы и отправкой.

Неизвестный ключ документа всё равно рисуем (без ссылки): бэк его требует, и молча
спрятанный чекбокс превратился бы в «кнопка не работает и непонятно почему».

Локали ru/en/zh/fa.
This commit is contained in:
Fringg
2026-07-30 00:31:47 +03:00
parent b615927283
commit 0f21629ba5
10 changed files with 319 additions and 16 deletions

View File

@@ -225,6 +225,10 @@
"invalidCredentials": "Invalid email or password",
"tooManyAttempts": "Too many attempts. Please try again later",
"verificationEmailNotice": "After registration, a verification email will be sent to your address",
"legalConsentPrefix": "I have read the",
"legalConsentTitle": "One more step",
"legalConsentSubtitle": "To create an account, confirm that you have read the documents.",
"legalConsentContinue": "Continue",
"checkEmail": "Check your email",
"verificationSent": "We sent a verification link to:",
"clickLinkToVerify": "Click the link in the email to verify your account and log in.",

View File

@@ -228,6 +228,10 @@
"sendResetLink": "ارسال لینک بازنشانی",
"tooManyAttempts": "تلاش‌های زیاد. لطفاً بعداً امتحان کنید",
"verificationEmailNotice": "پس از ثبت نام، ایمیل تأیید به آدرس شما ارسال خواهد شد",
"legalConsentPrefix": "من این سند را مطالعه کرده‌ام:",
"legalConsentTitle": "یک قدم دیگر",
"legalConsentSubtitle": "برای ساخت حساب، تأیید کنید که اسناد را مطالعه کرده‌اید.",
"legalConsentContinue": "ادامه",
"continueWithGoogle": "ادامه با Google",
"continueWithYandex": "ادامه با Yandex",
"continueWithDiscord": "ادامه با Discord",

View File

@@ -231,6 +231,10 @@
"sendResetLink": "Отправить ссылку",
"tooManyAttempts": "Слишком много попыток. Попробуйте позже",
"verificationEmailNotice": "После регистрации на вашу почту будет отправлено письмо для подтверждения",
"legalConsentPrefix": "Я ознакомлен(а) с документом",
"legalConsentTitle": "Ещё один шаг",
"legalConsentSubtitle": "Чтобы создать аккаунт, подтвердите, что ознакомились с документами.",
"legalConsentContinue": "Продолжить",
"checkEmail": "Проверьте почту",
"verificationSent": "Мы отправили ссылку для подтверждения на:",
"clickLinkToVerify": "Перейдите по ссылке в письме, чтобы подтвердить аккаунт и войти.",

View File

@@ -228,6 +228,10 @@
"sendResetLink": "发送重置链接",
"tooManyAttempts": "尝试次数过多,请稍后再试",
"verificationEmailNotice": "注册后,验证邮件将发送到您的邮箱",
"legalConsentPrefix": "我已阅读",
"legalConsentTitle": "还差一步",
"legalConsentSubtitle": "创建账户前,请确认您已阅读以下文件。",
"legalConsentContinue": "继续",
"continueWithGoogle": "通过 Google 继续",
"continueWithYandex": "通过 Yandex 继续",
"continueWithDiscord": "通过 Discord 继续",