DGSVO Compliance update 1 #30
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "develop"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sicherheit P-12 (MITT-05): logout() entfernt alle sj_coach_*-Schlüssel aus sessionStorage gezielt per Präfix-Löschung. Fremde Schlüssel (Browser-Extensions etc.) bleiben erhalten. Verhindert Datenleak bei Nutzerwechsel im selben Tab (geteilter Rechner). - AuthContext.jsx: Präfix-Schleife in logout() - tests/dev-smoke-test.spec.js: Playwright-Test P-12 (injects/checks 3 sj_coach_*-Schlüssel + 1 Fremd-Schlüssel; prüft selektive Löschung) Compliance-Dokumentation: - docs/compliance-implementation.md: P-12 ✅, Version 0.8.68 - docs/compliance-package-register.md: kanonisches Paketregister (neu) - docs/compliance-roadmap.md: lebende Steuerungs-Roadmap (neu) - docs/compliance-audit.md: §20 Paket-ID-Stabilitätsregel version: 0.8.68 (backend + frontend) module: auth 1.2.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>DesktopSidebar-Logout ruft App.jsx handleLogout() auf, welcher confirm('Wirklich abmelden?') zeigt. In Playwright headless gibt confirm() standardmäßig false zurück → Logout wurde nie ausgeführt. page.once('dialog', dialog => dialog.accept()) behebt das. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>Replace waitForLoadState('networkidle') with waitForURL (not /login) to ensure React auth processing completes before tests proceed with page.goto(). Prevents race condition where page.goto() interrupted in-progress token storage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>DB 047: legal_documents (versioniert, draft/published/archived) + legal_document_audit (Änderungslog); Partial-Unique-Index garantiert max. ein published-Dokument pro document_type. Backend: GET /api/legal-documents/{type}/published (kein Auth); Superadmin-CRUD + Publish/Archive + Audit unter /api/admin/legal-documents. Frontend: LegalPage lädt aus API mit Platzhalter-Fallback; AdminLegalDocumentsPage (/admin/legal-documents) mit Tab-Navigation, Versionsliste, Entwurf-Editor, Publish/Archive-Workflow, Änderungslog. AdminPageNav: Link „Rechtstexte" ergänzt. version: 0.8.71 (backend + frontend) module: legal_documents 1.0.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>POST /api/admin/legal-documents/{id}/copy-as-draft übernimmt Titel + Inhalt des Quelldokuments und legt einen neuen Entwurf mit nächster Versionsnummer an. Funktioniert für alle Status (draft/published/archived). UI: Copy-Button (⎘) in jeder Dokumentzeile; nach Kopie wird die Liste automatisch aktualisiert und der neue Entwurf ist sichtbar. version: 0.8.72 module: legal_documents 1.1.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>Implementiert server-seitige Rechteerklärungspflicht für alle Medien-Uploads und Sichtbarkeits-Promotions (konservative Erstannahme: alle Uploads). Backend: - backend/media_rights.py (NEU): Kernmodul — validate_rights_declaration, check_rights_coverage, assert_rights_for_promotion, assert_rights_for_exercise_link, write_rights_declaration, update_rights_quick_fields - backend/migrations/048_media_rights_declarations.sql (NEU): Tabelle media_asset_rights_declarations (Append-only Audit-Log), Felder rights_status/rights_visibility_level in media_assets - backend/routers/media_assets.py: P-06-Pflichtprüfung in PATCH (single + bulk), POST /api/media-assets/{id}/rights-declarations (Re-Deklaration), GET /api/admin/media-rights/legacy-summary|legacy-assets (Admin-Endpoints) - backend/routers/exercises.py: P-06-Felder in upload_exercise_media, assert_rights_for_exercise_link in attach_exercise_media_from_asset - backend/main.py: admin_rights_router registriert Frontend: - frontend/src/components/RightsDeclarationDialog.jsx (NEU): 9-Felder-Dialog (konservativ: immer alle Fragen), Client-Validierung, VORLÄUFIG-Hinweis - frontend/src/pages/MediaLibraryPage.jsx: Dialog-Intercept vor Upload, Altbestand-Indikator (legacy_unreviewed) - frontend/src/utils/api.js: P-06-Felder in bulkUploadMediaAssets weitergeleitet Tests: - backend/tests/test_media_rights_declaration.py (NEU): 28 Unit-/Integrationstests - backend/tests/test_media_assets_archive.py: P-06 fetchone-Slots + Mock ergänzt - backend/tests/test_media_assets_copyright_promotion.py: check_rights_coverage gemockt - tests/dev-smoke-test.spec.js: 5 P-06 E2E-Tests ergänzt Dokumentation: - docs/compliance-implementation.md: P-06-Abschnitt - docs/compliance-package-register.md: Status ⚠️ teilweise umgesetzt (KRIT-04 offen) - docs/compliance-roadmap.md: P-06 im Freigaben-Log Offen: KRIT-04 (rechtliche Finalisierung Einwilligungsformulierung) — technisch vollständig, Rechtstext VORLÄUFIG. version: 0.8.75 module: media_rights 1.0.0, media_assets 1.13.0, exercises 2.20.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>