Papierkorb statt endgültigem Löschen, und Zugriffsregeln für jede Bild-Route
Löschen in der Bibliothek entfernte Zeile und Ergebnisdatei sofort. Ein Fehlklick, und ein Ergebnis war weg — samt dem, was es gekostet hat. Jetzt landet es im Papierkorb: - weg aus Bibliothek, Freigabelinks, ZIPs, Auslieferung, NAS-Spiegel, Druckquellen und Druckverlauf; beim Wiederherstellen unverändert zurück - „Rückgängig" im Hinweis, Papierkorb-Ansicht mit Resttagen, Wiederherstellen, endgültig löschen, leeren - die Wartung räumt nach settings.trash_days (Standard 30, Admin -> Speicher) endgültig ab; 0 schaltet den Papierkorb aus - ein Bild, das noch in der Warteschlange wartet, wird nicht mehr erzeugt (und nicht bezahlt) - endgültig gelöscht wird nur, was kein anderes Bild mehr nutzt — Alternativen teilen ihre Quelle mit dem Original, auch Kombinieren- Quellen in source_paths (jsonb) Beim Durchgehen jeder Abfrage auf items fiel auf: Nur die Datei-Route prüfte, wer ein Bild sehen darf. Umbenennen, Löschen, Wiederholen, Alternative, Weiterbearbeiten und die Auswahl-ZIP nahmen jede Kennung von jedem Konto. Jetzt gilt eine Regel (src/lib/itemaccess.ts): sehen, was einem gehört oder in der geteilten Bibliothek liegt, ändern nur Eigenes; Admins alles. Für Till ändert sich nichts. Lea kann fremde Bilder in der geteilten Bibliothek weiter sehen, aber nicht mehr löschen. Dazu Favicon und Homebildschirm-Symbol, Hilfe und Changelog-Seite. Geprüft gegen echtes Postgres mit zwei Konten und echten Dateien: 35 Ende-zu-Ende-Prüfungen bestanden, Oberfläche im Browser (Löschen, Rückgängig, Papierkorb, Wiederherstellen, 390 px ohne Querlauf). 128 Tests, Typprüfung 0 Fehler.
This commit is contained in:
33 files changed
+456
-40
No files matched your search
@@ -0,0 +1,13 @@
|
||||
-- Papierkorb statt endgültigem Löschen ---------------------------------------
|
||||
--
|
||||
-- Löschen in der Bibliothek hat bisher Zeile und Ergebnisdatei sofort entfernt.
|
||||
-- Ein Fehlklick, und das Ergebnis war weg — samt dem, was die Erzeugung gekostet
|
||||
-- hat. Jetzt setzt Löschen nur `deleted_at`. Das Bild verschwindet aus jeder
|
||||
-- Ansicht, jedem Freigabelink und jeder Auslieferung und kommt beim
|
||||
-- Wiederherstellen unverändert zurück. Die Wartung entfernt es nach
|
||||
-- `settings.trash_days` endgültig.
|
||||
ALTER TABLE items ADD COLUMN IF NOT EXISTS deleted_at timestamptz;
|
||||
CREATE INDEX IF NOT EXISTS items_deleted_at_idx ON items (deleted_at) WHERE deleted_at IS NOT NULL;
|
||||
|
||||
-- 0 = kein Papierkorb: Löschen ist sofort endgültig, wie früher.
|
||||
ALTER TABLE settings ADD COLUMN IF NOT EXISTS trash_days int NOT NULL DEFAULT 30;
|
||||
Reference in new issue
Block a user