DSGVO-Compliance: Einwilligung, Datenschutzerklärung & Consent-Logging im Upload-Portal (STI-89)
- Datenschutzerklärung unter /portal/datenschutz/ öffentlich erreichbar - Link zur Datenschutzerklärung in Nachweis-Aufforderungs-E-Mails (HTML + TXT) - Einwilligungs-Checkbox vor Upload mit Server-Side-Validierung - Consent-Logging: einwilligung_erteilt_am auf UploadToken (Art. 7 Abs. 1 DSGVO) - Regelsatz-Korrektur: 449€→563€ in Onboarding-Template (Stand 01/2024) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -33,6 +33,11 @@ from django.views.decorators.http import require_http_methods
|
||||
|
||||
from stiftung.models import DokumentDatei, OnboardingEinladung, UploadToken, VierteljahresNachweis
|
||||
|
||||
|
||||
def datenschutzerklaerung(request):
|
||||
"""Datenschutzerklärung für das öffentliche Portal."""
|
||||
return render(request, "portal/datenschutzerklaerung.html")
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Erlaubte Dateitypen für Uploads
|
||||
@@ -105,6 +110,19 @@ def upload_formular(request, token):
|
||||
if request.method == "GET":
|
||||
return render(request, "portal/upload_formular.html", base_context)
|
||||
|
||||
# POST: Einwilligung prüfen
|
||||
einwilligung = request.POST.get("einwilligung")
|
||||
if not einwilligung:
|
||||
ctx = {
|
||||
**base_context,
|
||||
"einwilligung_fehler": "Bitte erteilen Sie Ihre Einwilligung zur Datenverarbeitung, um fortzufahren.",
|
||||
}
|
||||
for kat in [
|
||||
"studiennachweis", "einkommenssituation", "vermogenssituation", "weitere_dokumente"
|
||||
]:
|
||||
ctx[f"{kat}_text"] = request.POST.get(f"{kat}_text", "")
|
||||
return render(request, "portal/upload_formular.html", ctx)
|
||||
|
||||
# POST: Kategorisierte Dateien und Texte verarbeiten
|
||||
# Kategorien mit ihren DMS-Kontext-Werten und FK-Feldern auf VierteljahresNachweis
|
||||
KATEGORIEN = [
|
||||
@@ -228,6 +246,10 @@ def upload_formular(request, token):
|
||||
if nachweis_update_fields:
|
||||
nachweis.save(update_fields=list(set(nachweis_update_fields)))
|
||||
|
||||
# DSGVO-Einwilligung protokollieren (Art. 7 Abs. 1 DSGVO)
|
||||
upload_token.einwilligung_erteilt_am = timezone.now()
|
||||
upload_token.save(update_fields=["einwilligung_erteilt_am"])
|
||||
|
||||
# Token einlösen
|
||||
ip = _get_client_ip(request)
|
||||
upload_token.einloesen(ip_address=ip)
|
||||
|
||||
Reference in New Issue
Block a user