&& 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.
24 lines
1 KiB
JavaScript
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)
|
|
})
|