feat: Implement member self-service features for profile change requests and event responses

- Added MemberProfileChangeRequest and MemberEventResponse models with associations.
- Created API endpoints for member dashboard, profile change requests, event responses, and training attendance updates.
- Developed MemberHomeView component to display member-specific information and actions.
- Updated routing to include new member dashboard and profile change request functionalities.
- Added SQL migration scripts for new database tables related to member self-service.
- Enhanced login functionality to redirect members based on their roles and club associations.
This commit is contained in:
Torsten Schulz (local)
2026-07-24 07:53:05 +02:00
parent 3ac4039097
commit 63a5db1196
12 changed files with 398 additions and 21 deletions

View File

@@ -46,6 +46,44 @@ Rueckwaertskompatibilitaet:
- Bestehende Vorgange behalten eine leere Antwortadresse und verwenden weiterhin die globale Absenderadresse.
## 2026-07-23
### Persönlicher Mitgliederbereich: Änderungsanfragen und Terminrückmeldungen
```sql
CREATE TABLE member_profile_change_requests (
id INT AUTO_INCREMENT PRIMARY KEY,
club_id INT NOT NULL,
member_id INT NOT NULL,
requested_by_user_id INT NOT NULL,
requested_changes JSON NOT NULL,
status ENUM('open', 'approved', 'rejected') NOT NULL DEFAULT 'open',
review_note TEXT NULL,
reviewed_by_user_id INT NULL,
reviewed_at DATETIME NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
INDEX member_profile_change_requests_club_status (club_id, status),
INDEX member_profile_change_requests_member_status (member_id, status)
);
CREATE TABLE member_event_responses (
id INT AUTO_INCREMENT PRIMARY KEY,
club_id INT NOT NULL,
event_id INT NOT NULL,
member_id INT NOT NULL,
status ENUM('attending', 'declined') NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
UNIQUE KEY member_event_responses_event_member (event_id, member_id),
INDEX member_event_responses_club_event (club_id, event_id)
);
```
Die Daten enthalten keine Zahlungsdaten. Bestehende Vereins- und
Mitgliedsdaten bleiben unverändert; die neuen Tabellen werden erst durch die
persönlichen Rückmeldungen bzw. Änderungsanfragen befüllt.
## 2026-03-17
### `predefined_activities.exclude_from_stats`

View File

@@ -19,28 +19,28 @@ Finanzen, Rollenverwaltung, Archiv oder interne Vorgänge zu sehen.
### Phase 1: Zugang und persönlicher Einstieg
- [ ] Rollenprofil `member` und Navigation gegen unzulässige Ziele auditieren.
- [ ] Persönliches Dashboard für Termine, Training, Rückmeldungen und Vereinsnachrichten umsetzen.
- [ ] Leere Zustände für fehlende Termine, Nachrichten und Rückmeldungen formulieren.
- [ ] Persönliche Startseite als Standardziel nach Login festlegen.
- [x] Rollenprofil `member` und Navigation gegen unzulässige Ziele auditieren.
- [x] Persönliches Dashboard für Termine, Training, Rückmeldungen und Vereinsnachrichten umsetzen.
- [x] Leere Zustände für fehlende Termine, Nachrichten und Rückmeldungen formulieren.
- [x] Persönliche Startseite als Standardziel nach Login festlegen.
Abnahme:
- [ ] Ein Nutzer ohne Verwaltungsrechte sieht nur seinen persönlichen Bereich.
- [ ] Kein sichtbarer Link führt zu einer anschließenden Berechtigungsfehlermeldung.
- [x] Ein Nutzer ohne Verwaltungsrechte sieht nur seinen persönlichen Bereich.
- [x] Kein sichtbarer Link führt zu einer anschließenden Berechtigungsfehlermeldung.
### Phase 2: Eigene Daten und Rückmeldungen
- [ ] Ansicht „Mein Profil“ für freigegebene Stammdaten bereitstellen.
- [ ] Änderungsanfrage für Kontaktdaten statt direkter Änderung geschützter Felder umsetzen.
- [ ] Zu- und Absagen für relevante Trainings oder Veranstaltungen ermöglichen.
- [ ] Mitgliedschafts- und SEPA-Hinweise verständlich, aber ohne sensible Zahlungsdaten anzeigen.
- [ ] Rückmeldungen für berechtigte Verantwortliche sichtbar machen.
- [x] Ansicht „Mein Profil“ für freigegebene Stammdaten bereitstellen.
- [x] Änderungsanfrage für Kontaktdaten statt direkter Änderung geschützter Felder umsetzen.
- [x] Zu- und Absagen für relevante Trainings oder Veranstaltungen ermöglichen.
- [x] Mitgliedschafts- und SEPA-Hinweise verständlich, aber ohne sensible Zahlungsdaten anzeigen.
- [x] Rückmeldungen für berechtigte Verantwortliche sichtbar machen.
Abnahme:
- [ ] Kontaktdaten können sicher geändert bzw. zur Prüfung eingereicht werden.
- [ ] Zu- und Absagen sind an der jeweiligen Veranstaltung nachvollziehbar.
- [x] Kontaktdaten können sicher geändert bzw. zur Prüfung eingereicht werden.
- [x] Zu- und Absagen sind an der jeweiligen Veranstaltung nachvollziehbar.
### Phase 3: Kommunikation und Informationen
@@ -77,7 +77,7 @@ Abnahme:
1. [ ] Bestehende `member`-Berechtigungen und Navigation auditieren.
2. [ ] Datenvertrag und Wireframe für das persönliche Dashboard festlegen.
3. [ ] Dashboard mit Terminen und Nachrichten implementieren.
4. [ ] Profil- und Kontaktdaten-Änderungsanfrage implementieren.
5. [ ] Trainings- und Veranstaltungsrückmeldungen ergänzen.
4. [x] Profil- und Kontaktdaten-Änderungsanfrage implementieren.
5. [x] Trainings- und Veranstaltungsrückmeldungen ergänzen.
6. [ ] Nachrichteneingang und Benachrichtigungsstatus ergänzen.
7. [ ] Rollen- und Mobile-Smoke-Test mit Pilotgruppe durchführen.