fix(ipsec): сохранять общий сертификат при удалении identity

This commit is contained in:
Denozordec committed 2026-10-10 21:11:04 +07:00
1 parent 58f5c48a97
commit d52c48e5ed
14 files changed
+506 -14

No files matched your search

+20 -2
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10
Сервер161.104.46.222: backend ux-refs114/version1.0.0-test.refs114, frontend ux-alias112-version/version1.0.0-test.alias112. Backend/PG healthy; native shared-certificate guard и UI4/4 passed. RouterOS matching conflict зафиксирован, PATCH200 после удаления собственного дубля. Cleanup13×2 passed; оба CHR доступны, пароли прежние. Следующий115 — UI удаления identity с сохранением сертификата.
Сервер161.104.46.222: backend ux-refs114/version1.0.0-test.refs114, frontend ux-keepcert115/version1.0.0-test.keepcert115. Backend/PG healthy, четыре live подтверждения и один mobile DELETE identity с сохранением общего certificate ID passed; cleanup13×2. Оба CHR доступны, пароли прежние. Следующий116 — исключить name-based удаление несвязанного сертификата.
| Параметр | Проверенное состояние |
| --- | --- |
@@ -14,7 +14,7 @@
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
| Образы приложения | mmapp-test/backend:ux-refs114 и mmapp-test/frontend:ux-alias112-version; запущены |
| Образы приложения | mmapp-test/backend:ux-refs114 и mmapp-test/frontend:ux-keepcert115; запущены |
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
@@ -884,3 +884,21 @@ Backend только: ux-refs114/version1.0.0-test.refs114, base60b2e09/context
| --- | --- |
| [ReUI Filtering2](https://reui.io/preview/base/data-grid-filtering-2?ref=mcp) | Сертификат → все identity → отдельные строки/настройки → выбор по identity ID |
| [ReUI Sheet8](https://reui.io/preview/base/sheet-8?ref=mcp) | Выбранная identity → проверка ссылок → API409 без записи либо подтверждённая операция |
## 12.5.115 — IPsec: удалить identity и сохранить общий сертификат через UI (2026-10-10)
В существующий AlertDialog добавлен Checkbox «Удалить также клиентский сертификат» только для certificate identity с явным identity:<id>. По умолчанию выбран для единственной привязки; при других rows того же certName на том же serverId выключен/disabled. Сертификаты с одинаковым именем на другом сервере не считаются общими. Подтверждение объясняет сохранение сертификата и остальных identity; запрос передаёт removeCertificate=false. При API ошибке диалог/выбор/данные сохраняются, блокировки повторного нажатия прежние. Для cert-only row без identity нет ложной возможности «удалить клиента, сохранив единственный объект».
Изменены app/(main)/ipsec/page.tsx и tests/e2e/ipsec-delete.spec.ts. ReUI/base-nova, установленный AlertDialog и Checkbox переиспользованы; vendor/theme не менялись. Scoped ESLint и source TypeScript passed; production frontend build passed. Приняты26 unique E2E: первая профильная серия22 passed/4 failed из-за проверки getByRole фона при открытом модальном диалоге; corrected includeHidden проверка сохранности DOM rows дала4/4 rerun9.8s. Это26 уникальных, не30 сценариев.
Frontend ux-keepcert115/version1.0.0-test.keepcert115 развёрнут; backend ux-refs114/version1.0.0-test.refs114 сохранён. Source base58f5c48/context build-alias112-front плюс один page override, bytehash совпал. Label keepcert115 — метка этапа, неGitSHA; compiled frontend reproducibility не заявлена. Backend/PG healthy, frontend HTTP/browser passed, healthcheck у frontend отсутствует. Private rollback pre-keepcert115.env и прежний образ сохранены.
На собственном signed-certificate IKE fixture проверены4 live диалога (dark/light1280/320) без mocks; первые3 отменены, в light320 выполнен ровно один DELETE identity с removeCertificate=false. Native readback подтвердил отсутствие выбранной identity и сохранение точного certificate ID и другой identity. Исходный клиент восстановил online/198.18.115.250, unknown alert исчез. Последующие PATCH имени/возврат200 подтвердили восстановление. Чужой для приложения mode-config API не удалял: helper очистил только собственный fixture объект. История вызывается API с dedupe; точное число вставленных revisions не заявляется.
Собственные native объекты и private exports/imports очищены, исходные13 коллекций×2 совпали; маршруты/default/logging сохранены. Оба CHR/SSH доступны, пароли прежние. Screens4, просмотрен light320. Протоколы: [native/deployment](ux-ui/acceptance/ipsec-preserve-certificate-2026-10-10.json), [live UI](ux-ui/acceptance/browser-ipsec-keepcert-2026-10-10.json).
Следующий116: default user DELETE ещё угадывает имя сертификата для identity без remote-certificate; проверить/исключить случай PSK + отдельный cert с совпавшим именем. После последнего исправления — единая общая регрессия. Внешние Portal/Telegram/client OS/multi-WAN/scale и множественные native IKE sessions остаются в матрице.
| Референс | Схема |
| --- | --- |
| [ReUI Sheet8](https://reui.io/preview/base/sheet-8?ref=mcp) | Выбранная identity → прямой объём удаления → сохранить общий сертификат → подтверждённый API результат |