/// // Konten löschen darf der Superadmin. // // Bis hierher galt `users.deleteRule = "id = @request.auth.id"`: Ein Konto // konnte allein sein Inhaber löschen. Das ist die richtige Voreinstellung — // eine Teamleitung hat an fremden Konten nichts verloren, sie verwaltet // Fahrer und Mitgliedschaften, nicht Menschen. Genau dabei bleibt es; im // Kader gibt es seitdem nur noch „Zugang zum Team entziehen". // // Was fehlte, war die Stelle darüber: Ein Konto, das niemand mehr braucht und // dessen Inhaber sich nicht selbst darum kümmert, blieb für immer stehen. Das // erledigt jetzt der Superadmin im Benutzer-Verzeichnis unter Einstellungen. // // Der Vorspann `@request.auth.id != ""` ist Pflicht (siehe // 1754501700_rules_require_login.js): Ohne ihn wäre `@request.auth.superadmin` // einer anonymen Anfrage ein leerer Wert — und leer gegen leer verglichen ist // in PocketBase wahr. // // Gelöscht wird nur das Konto. Fahrer, Teilnahmen und Zeiten hängen am Team // und bleiben stehen; sie sind dessen Geschichte und nicht die des Logins. // Ein Team, dessen Owner das Konto ist, blockiert die Löschung — `teams.owner` // ist eine Pflichtrelation ohne cascadeDelete. Die Oberfläche prüft das vorher // und sagt, welches Team im Weg steht. const RULE = 'id = @request.auth.id || (@request.auth.id != "" && @request.auth.superadmin = true)' migrate((app) => { const users = app.findCollectionByNameOrId('users') users.deleteRule = RULE app.save(users) }, (app) => { const users = app.findCollectionByNameOrId('users') users.deleteRule = 'id = @request.auth.id' app.save(users) })