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:
@@ -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`
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user