Реализован интерфейс согласий

This commit is contained in:
mi
2026-07-23 14:29:16 +03:00
parent b1ed714d5b
commit 31efbf3b69
27 changed files with 817 additions and 110 deletions
+7 -2
View File
@@ -241,9 +241,14 @@ Pydantic `422` преобразуется в `400 validation_error`, чтобы
"auth": {"phone_enabled": true, "password_enabled": false},
"operator": {"call_phone": "+74999591007"},
"consents": {
"personal_data": {"required": true, "document_url": "https://...", "version": "2026-06-10"},
"personal_data": {
"required": true,
"document_url": "https://www.han0107.ru/privacy/persdata-agree-mobile",
"privacy_policy_document_url": "https://www.han0107.ru/privacy",
"version": "2026-06-10"
},
"user_agreement": {"required": true, "document_url": "https://...", "version": "2026-06-10"},
"marketing": {"required": false, "document_url": null, "version": "2026-06-10"}
"marketing": {"required": false, "document_url": "https://www.han0107.ru/privacy/ads-agree", "version": "2026-06-10"}
},
"attachments": {
"allowed_extensions": ["jpg", "jpeg", "png", "webp", "heic", "heif", "pdf"],
+1 -1
View File
@@ -74,7 +74,7 @@ Auth state machine: `guest → authorizing → bootstrapping → authenticated`;
### 5.2. Согласия и OTP
Modal согласий отображает актуальные URL/версии из config. `personal_data` и `user_agreement` обязательны, `marketing` необязателен. После подтверждения intent остаётся в памяти, начинается OIDC PKCE redirect.
Modal согласий (макет AuthConsent) показывает три блока. В блоке `personal_data` — две ссылки: `document_url` (согласие на обработку ПД) и `privacy_policy_document_url` (политика ПД из `consent.privacy_policy.document_url`). В блоках `user_agreement` и `marketing` — по одной ссылке из `document_url` (`consent.marketing.document_url` для рекламы). Обязательность берётся из `consent.*.required` (`personal_data`/`user_agreement` обычно обязательны, `marketing` — нет). После подтверждения intent остаётся в памяти, начинается OIDC PKCE redirect.
OTP вводится на странице/теме Keycloak. В mock mode Keycloak сверяет secret-код; в real mode Keycloak генерирует и локально проверяет OTP, а доставку заказывает в `sms-service` по module-11. Frontend не вызывает `sms-service`/Direct, не получает provider status, service URL/token или mock secret.