feat: Art. 11 DSGVO — reject DSR when data subject not identifiable

- New DSRArt11Service: handles rejection with proper legal basis,
  automated email notification to requester explaining Art. 11
- POST /dsr/{id}/reject-art11 endpoint
- ActionButtons.tsx: "Nicht identifizierbar (Art. 11)" button
  shown when identity is not yet verified
- Also fixes: DSR export type-cast rollback handling

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-03 23:30:18 +02:00
parent c55d0ab12a
commit 060f351da7
3 changed files with 140 additions and 7 deletions
@@ -9,7 +9,8 @@ export function ActionButtons({
onExtendDeadline,
onComplete,
onReject,
onAssign
onAssign,
onRejectArt11,
}: {
request: DSRRequest
onVerifyIdentity: () => void
@@ -17,6 +18,7 @@ export function ActionButtons({
onComplete: () => void
onReject: () => void
onAssign: () => void
onRejectArt11?: () => void
}) {
const isTerminal = request.status === 'completed' || request.status === 'rejected' || request.status === 'cancelled'
@@ -48,12 +50,23 @@ export function ActionButtons({
return (
<div className="space-y-2">
{!request.identityVerification.verified && (
<button
onClick={onVerifyIdentity}
className="w-full px-4 py-2 bg-yellow-500 text-white hover:bg-yellow-600 rounded-lg transition-colors text-sm font-medium"
>
Identitaet verifizieren
</button>
<>
<button
onClick={onVerifyIdentity}
className="w-full px-4 py-2 bg-yellow-500 text-white hover:bg-yellow-600 rounded-lg transition-colors text-sm font-medium"
>
Identitaet verifizieren
</button>
{onRejectArt11 && (
<button
onClick={onRejectArt11}
className="w-full px-4 py-2 text-gray-600 bg-gray-50 hover:bg-gray-100 border border-gray-200 rounded-lg transition-colors text-sm"
title="Person kann anhand der gespeicherten Daten nicht identifiziert werden (Art. 11 DSGVO)"
>
Nicht identifizierbar (Art. 11)
</button>
)}
</>
)}
<button