stammtisch-hersbruck/backend/pb_migrations/1754500300_trail_flags_delete_rule_precedence.js
Daniel Michelberger f576550429 fix: Präzedenzfehler in trail_flags.deleteRule beheben
&& 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.
2026-08-06 17:13:35 +02:00

24 lines
1 KiB
JavaScript

/// <reference path="../pb_data/types.d.ts" />
// Präzedenzfehler in trail_flags.deleteRule behoben: && bindet stärker als
// ||, ohne Klammern galt die Marker-Prüfung nur für den admins-Zweig.
// Ein Team-Owner konnte damit einen noch referenzierten Flag-Typ löschen
// und verwaiste Marker hinterlassen. Separate Migration, weil
// 1754500200_trail_flags_delete_rule.js bereits mit der fehlerhaften Regel
// angewendet wurde.
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 + ' && @collection.trail_markers.flag ?!= id'
app.save(flags)
})