docs: document password reset and member delete as additions to PROJ-1/PROJ-3
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0143yYvjesjHndBACoweyK67
This commit is contained in:
1 parent
bc4d74995f
commit
568c56a4a7
3 files changed
+12
-4
No files matched your search
+3
-1
@@ -24,7 +24,9 @@
|
|||||||
| PROJ-10 | Deployment (Docker Compose + Synapse Installer) | Deployed | [PROJ-10-deployment.md](PROJ-10-deployment.md) | 2026-09-11 |
|
| PROJ-10 | Deployment (Docker Compose + Synapse Installer) | Deployed | [PROJ-10-deployment.md](PROJ-10-deployment.md) | 2026-09-11 |
|
||||||
| PROJ-11 | Chat (Matrix Client-Server API) | Planned | [PROJ-11-chat.md](PROJ-11-chat.md) | 2026-09-11 |
|
| PROJ-11 | Chat (Matrix Client-Server API) | Planned | [PROJ-11-chat.md](PROJ-11-chat.md) | 2026-09-11 |
|
||||||
|
|
||||||
Noch nicht gestartet (siehe [docs/PRD.md](../docs/PRD.md) Core Features): Passwort-Reset, dedizierte Tenant-Isolation-Tests. P2 (Medien-Anhänge, Push) bewusst aus PROJ-11 ausgeklammert, siehe dessen Non-Goals.
|
Noch nicht gestartet (siehe [docs/PRD.md](../docs/PRD.md) Core Features): dedizierte Tenant-Isolation-Tests. P2 (Medien-Anhänge, Push) bewusst aus PROJ-11 ausgeklammert, siehe dessen Non-Goals.
|
||||||
|
|
||||||
|
Nachträge 2026-09-11 (commit bc4d749): Passwort-Reset → [[PROJ-1]], Mitglied hart löschen → [[PROJ-3]].
|
||||||
|
|
||||||
<!-- Add features above this line -->
|
<!-- Add features above this line -->
|
||||||
|
|
||||||
|
|||||||
@@ -13,16 +13,18 @@ E-Mail/Passwort-Auth mit JWT-Session für TalkTime. Grundlage für alle geschüt
|
|||||||
- `frontend/src/pages/LoginPage.tsx`, `RegisterPage.tsx`
|
- `frontend/src/pages/LoginPage.tsx`, `RegisterPage.tsx`
|
||||||
- `frontend/src/lib/auth-context.tsx` — Session-State im Frontend
|
- `frontend/src/lib/auth-context.tsx` — Session-State im Frontend
|
||||||
- `frontend/src/routes/ProtectedRoute.tsx` — Redirect bei fehlender Session
|
- `frontend/src/routes/ProtectedRoute.tsx` — Redirect bei fehlender Session
|
||||||
|
- **Nachtrag 2026-09-11 (commit bc4d749):** Passwort-Reset — `backend/src/db/schema.ts` (`password_reset_tokens`-Tabelle, 60min TTL, single-use), `POST /api/auth/forgot-password` + `POST /api/auth/reset-password/:token` in `backend/src/routes/auth.ts`, Mail-Versand über bestehenden `services/mail.ts`; Frontend: `ForgotPasswordForm.tsx`/`ResetPasswordForm.tsx`, `ForgotPasswordPage.tsx`/`ResetPasswordPage.tsx`, Link im `LoginForm.tsx`
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
- [x] Registrierung mit E-Mail + Passwort, Passwort gehasht (bcrypt, Cost 12)
|
- [x] Registrierung mit E-Mail + Passwort, Passwort gehasht (bcrypt, Cost 12)
|
||||||
- [x] Login liefert JWT, generische Fehlermeldung bei falschen Zugangsdaten (kein User-Enumeration-Leak)
|
- [x] Login liefert JWT, generische Fehlermeldung bei falschen Zugangsdaten (kein User-Enumeration-Leak)
|
||||||
- [x] Geschützte Frontend-Routen leiten unauthentifizierte Nutzer zum Login um
|
- [x] Geschützte Frontend-Routen leiten unauthentifizierte Nutzer zum Login um
|
||||||
- [x] Geschützte Backend-Routen verifizieren JWT via `request.jwtVerify()`
|
- [x] Geschützte Backend-Routen verifizieren JWT via `request.jwtVerify()`
|
||||||
|
- [x] Passwort-Reset per E-Mail-Link, Token läuft nach 60min ab, einmalig verwendbar
|
||||||
|
- [x] `forgot-password` antwortet immer generisch, unabhängig davon ob die E-Mail registriert ist (kein Enumeration-Leak)
|
||||||
|
|
||||||
## Open Items
|
## Open Items
|
||||||
- Passwort-Reset (siehe PRD P0) noch nicht gebaut
|
|
||||||
- E-Mail-Verification laut PRD P1 noch offen
|
- E-Mail-Verification laut PRD P1 noch offen
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
Retro-Spec: Feature war bereits produktiv im Code, INDEX.md/Spec wurden nachträglich nachgezogen.
|
Retro-Spec: Feature war bereits produktiv im Code, INDEX.md/Spec wurden nachträglich nachgezogen. Passwort-Reset am 2026-09-11 nachgebaut und getestet auf talkhub-LXC (192.168.66.8).
|
||||||
@@ -10,14 +10,18 @@ Mitglieder eines Vereins verwalten: Liste, Status-Aktionen (aktivieren/deaktivie
|
|||||||
- `backend/src/routes/members.ts`
|
- `backend/src/routes/members.ts`
|
||||||
- `frontend/src/pages/MembersPage.tsx`
|
- `frontend/src/pages/MembersPage.tsx`
|
||||||
- Mitglied-Status-Aktionen + Deaktivierungs-Sync (commit b38a5a4)
|
- Mitglied-Status-Aktionen + Deaktivierungs-Sync (commit b38a5a4)
|
||||||
|
- **Nachtrag 2026-09-11 (commit bc4d749):** `DELETE /api/members/:memberId` — Admin-only, hartes Löschen. Audit-Log-Eintrag wird vor dem Delete geschrieben (`audit_logs.targetId` ist unconstrained text, überlebt das Löschen). Matrix-Account wird per `deactivateUser(matrixUserId, erase=true)` gelöscht. Abhängige Daten (`parent_links`, `team_members`, `org_roles`) laufen über bestehende `onDelete: cascade`-FKs mit. Frontend: Bestätigungsdialog (`AlertDialog`) im Dropdown-Menü der Mitgliederliste.
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
- [x] Mitgliederliste pro Verein abrufbar (paginiert)
|
- [x] Mitgliederliste pro Verein abrufbar (paginiert)
|
||||||
- [x] Status ändern (aktiv/inaktiv) durch berechtigte Rollen
|
- [x] Status ändern (aktiv/inaktiv) durch berechtigte Rollen
|
||||||
- [x] Deaktivierung löst Sync-Schritt Richtung Matrix aus
|
- [x] Deaktivierung löst Sync-Schritt Richtung Matrix aus
|
||||||
|
- [x] Mitglied kann durch Org-Admin endgültig gelöscht werden (mit Bestätigungsdialog im Frontend)
|
||||||
|
- [x] Löschen entfernt/erased den zugehörigen Matrix-Account und alle abhängigen Datensätze (Team-Zuordnungen, Rollen, Eltern-Verknüpfungen)
|
||||||
|
- [x] Audit-Log-Eintrag bleibt nach dem Löschen erhalten
|
||||||
|
|
||||||
## Open Items
|
## Open Items
|
||||||
- Vollständige Membership-Sync mit Outbox/Retry/Reconciliation laut PRD noch nicht fertig — aktuell nur direkter Sync-Aufruf, kein Retry-Mechanismus geprüft
|
- Vollständige Membership-Sync mit Outbox/Retry/Reconciliation laut PRD noch nicht fertig — aktuell nur direkter Sync-Aufruf, kein Retry-Mechanismus geprüft
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
Retro-Spec.
|
Retro-Spec. Löschen-Feature am 2026-09-11 nachgebaut und getestet auf talkhub-LXC (192.168.66.8).
|
||||||
Reference in new issue
Block a user