E-Mail-Praeferenzen: Opt-out je Mail-Typ + One-Click-Unsubscribe ohne Login

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-07-10 17:15:05 +00:00
parent 06d80b255b
commit 51da374173
21 changed files with 746 additions and 9 deletions

View file

@ -0,0 +1,71 @@
@extends('web.layouts.web-master')
@section('title', 'E-Mail-Benachrichtigungen abbestellen')
@section('meta_description', 'Abmeldung von Benachrichtigungs-E-Mails')
@section('robots', 'noindex, nofollow')
{{--
One-Click-Unsubscribe-Bestätigungsseite: öffentlich ohne Login erreichbar
über den signierten Abmelde-Link im Footer der Benachrichtigungs-Mails.
Der Aufruf hat die Abmeldung bereits durchgeführt (EmailUnsubscribeController);
die Seite bestätigt sie und bietet das Rückgängigmachen an.
--}}
@section('content')
<x-web.static-page
eyebrow="E-Mail-Benachrichtigungen"
title="{{ $state === 'invalid' ? 'Link ungültig' : ($state === 'resubscribed' ? 'Wieder angemeldet' : 'Erfolgreich abgemeldet') }}"
breadcrumb="Abmeldung"
>
<div class="max-w-[680px]">
@if ($state === 'unsubscribed')
<div class="border border-bg-rule bg-bg-elev p-6" role="status">
<div class="section-eyebrow mb-3">Abmeldung bestätigt</div>
<h2 class="text-[19px] font-bold text-ink tracking-[-0.3px] m-0 mb-2">
Sie erhalten keine E-Mails vom Typ „{{ $notificationType->label() }}" mehr.
</h2>
<p class="text-[13.5px] text-ink-2 leading-[1.6] m-0 mb-4">
Die Abmeldung gilt nur für {{ $notificationType->unsubscribeLabel() }}.
System-E-Mails wie Passwort-Zurücksetzen oder rechtlich erforderliche
Bestätigungen erhalten Sie weiterhin.
</p>
<form method="POST" action="{{ $resubscribeUrl }}">
@csrf
<button type="submit"
class="inline-flex items-center px-4 py-2.5 text-[13px] font-semibold border border-bg-rule bg-white text-ink hover:border-hub transition-colors cursor-pointer">
Abmeldung rückgängig machen
</button>
</form>
</div>
@elseif ($state === 'resubscribed')
<div class="border border-bg-rule bg-bg-elev p-6" role="status">
<div class="section-eyebrow mb-3">Anmeldung bestätigt</div>
<h2 class="text-[19px] font-bold text-ink tracking-[-0.3px] m-0 mb-2">
Sie erhalten wieder E-Mails vom Typ „{{ $notificationType->label() }}".
</h2>
<p class="text-[13.5px] text-ink-2 leading-[1.6] m-0">
Ihre Abmeldung wurde rückgängig gemacht.
</p>
</div>
@else
<div class="border border-bg-rule bg-bg-elev p-6" role="alert">
<div class="section-eyebrow mb-3">Link ungültig</div>
<h2 class="text-[19px] font-bold text-ink tracking-[-0.3px] m-0 mb-2">
Dieser Abmelde-Link ist ungültig.
</h2>
<p class="text-[13.5px] text-ink-2 leading-[1.6] m-0">
Bitte verwenden Sie den Link aus einer aktuellen E-Mail. Alternativ können Sie
Ihre E-Mail-Benachrichtigungen jederzeit in Ihrem Konto unter
„Mein Profil" verwalten.
</p>
</div>
@endif
<p class="text-[12.5px] text-ink-3 leading-[1.6] mt-6">
Eingeloggt können Sie alle E-Mail-Benachrichtigungen unter
<a href="{{ route('me.profile') }}" class="text-hub underline underline-offset-2">Mein Profil</a>
verwalten.
</p>
</div>
</x-web.static-page>
@endsection