&& bindet stärker als || — ohne Klammern galt die Marker-Referenzprüfung nur für den admins-Zweig. Ein Team-Owner konnte dadurch einen noch von Markern referenzierten Flag-Typ löschen und verwaiste Marker hinterlassen. Klammerung in 1754500000_created_trails.js korrigiert, damit ein Neuaufbau der Datenbank die richtige Regel von Anfang an bekommt. 1754500200_trail_flags_delete_rule.js (bereits mit der fehlerhaften Regel angewendet) inhaltlich ebenfalls korrigiert, und eine neue Migration 1754500300_trail_flags_delete_rule_precedence.js trägt die Korrektur für bestehende Instanzen nach. Snapshot aktualisiert.
26 lines
1.1 KiB
JavaScript
26 lines
1.1 KiB
JavaScript
/// <reference path="../pb_data/types.d.ts" />
|
|
|
|
// trail_flags.deleteRule ergänzt: Löschen nur, solange kein Marker diesen
|
|
// Typ verwendet — sonst bliebe ein Pflichtfeld (trail_markers.flag) zurück,
|
|
// das ins Leere zeigt. Separate Migration, weil 1754500000_created_trails.js
|
|
// bereits angewendet wurde und PocketBase Migrationsdateien nur einmal
|
|
// anhand des Dateinamens ausführt, unabhängig vom Inhalt.
|
|
//
|
|
// Klammern nötig: && bindet stärker als || — ohne sie gälte die
|
|
// Marker-Prüfung nur für den admins-Zweig, nicht für owner.
|
|
|
|
migrate((app) => {
|
|
const flags = app.findCollectionByNameOrId('trail_flags')
|
|
const adminOnly =
|
|
'team.owner.id ?= @request.auth.id' +
|
|
' || team.admins.id ?= @request.auth.id'
|
|
flags.deleteRule = '(' + adminOnly + ') && @collection.trail_markers.flag ?!= id'
|
|
app.save(flags)
|
|
}, (app) => {
|
|
const flags = app.findCollectionByNameOrId('trail_flags')
|
|
const adminOnly =
|
|
'team.owner.id ?= @request.auth.id' +
|
|
' || team.admins.id ?= @request.auth.id'
|
|
flags.deleteRule = adminOnly
|
|
app.save(flags)
|
|
})
|