Admin-Konto mit Nutzeruebersicht und Nutzer-Loeschung #206
Labels
No labels
priority/could
priority/must
priority/should
priority/wont
status/blocked
status/claimed
status/done-migrated
type/bug
type/feature
type/infra
type/tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
robert/todo#206
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User Story
Als Betreiber von Checkly moechte ich ein eigenes Admin-Konto, das nach dem Login nicht in die App fuehrt, sondern eine Nutzeruebersicht zeigt, in der ich Nutzerkonten einsehen und loeschen kann - damit ich verwaiste, Test- oder Spam-Konten entfernen kann, ohne direkt in der Datenbank zu arbeiten.
Direkter Auftrag des Menschen im Chat (2026-09-27), daher ohne regulaeren PO-Backlog-Durchlauf.
Akzeptanzkriterien
Admin__UserName,Admin__EmailAddress,Admin__Password), nicht ueber die Registrierung. Existiert bereits ein normales Konto mit diesem Benutzernamen, wird es nicht zum Admin befoerdert (verhindert Uebernahme durch Vorab-Registrierung) - stattdessen Fehler im Log.IsAdmin,CreatedAtUtc,LastLoginAtUtcam Nutzer; Bestandsnutzer haben dortnull("unbekannt").Ausserhalb des Umfangs
Start: direkter Auftrag im Chat. Umsetzung Backend (IsAdmin/CreatedAtUtc/LastLoginAtUtc, Admin-Bootstrap aus Konfiguration, Admin-Queries/-Commands mit eigenem Authorize-Handler, gemeinsame Loeschlogik mit der Selbstloeschung) und Frontend (eigene Admin-Seite statt App).
Umgesetzt
Commits auf master:
60f9d48a(Refactor: gemeinsame Loeschlogik),accd84de(Schema: IsAdmin, CreatedAtUtc, LastLoginAtUtc),b38a4a42(Admin-Backend),5dd679f4(Admin-Oberflaeche),692f091a(Team-Memory).Umfang
ADMIN_USERNAME,ADMIN_EMAIL,ADMIN_PASSWORDin docker-compose.yml, siehe.env.example). Es wird beim Start angelegt, wenn Benutzername und E-Mail noch frei sind. Ein bestehendes normales Konto wird nie befoerdert (Schutz gegen Vorab-Registrierung), stattdessen gibt es einen Fehler im Log.EraseUserAccountCommand. Bei der Admin-Loeschung sagt die Benachrichtigungs-E-Mail, dass ein Administrator das Konto geloescht hat.AuthorizeIsCurrentUserAdminQuery(401 anonym, 403 ohne Admin-Rechte), dasIsAdminbei jedem Aufruf frisch aus der DB liest.Tests
AdminPage.test.tsxmit 10 Tests; gesamt 1451 gruen,tsc -bund Build sauber.Bewusst offen
Nachtrag: die im Abschlusskommentar erwaehnte Luecke (eigene Masterpacklisten bleiben bei Kontoloeschung liegen) ist mit #209 behoben.