/// // Jedes Teammitglied darf den Zustand eines Trails melden. // // Bisher durften das nur Paten und Team-Admins. Genau die sind aber selten // die, die vor dem umgestürzten Baum stehen. Gemeldet werden darf deshalb von // allen — geändert werden darf dabei aber ausschließlich der Zustand. // // PocketBase kennt keine Rechte je Feld, also wird jedes andere Feld // ausdrücklich ausgeschlossen. Das ist lang und muss mitwachsen, wenn ein // Feld dazukommt; die Alternative wäre, Mitgliedern das ganze Objekt // freizugeben. `status_by = @request.auth.id` verhindert außerdem, eine // Meldung unter fremdem Namen abzusetzen. const STEWARD_OR_ADMIN = 'stewards.id ?= @request.auth.id' + ' || team.owner.id ?= @request.auth.id' + ' || team.admins.id ?= @request.auth.id' const MEMBER_REPORTS_STATUS = 'team.users.id ?= @request.auth.id' + ' && @request.body.team:isset = false' + ' && @request.body.name:isset = false' + ' && @request.body.description:isset = false' + ' && @request.body.stewards:isset = false' + ' && @request.body.event:isset = false' + ' && @request.body.current:isset = false' + ' && @request.body.created_by:isset = false' + ' && @request.body.status_by = @request.auth.id' migrate((app) => { const trails = app.findCollectionByNameOrId('trails') trails.updateRule = `${STEWARD_OR_ADMIN} || (${MEMBER_REPORTS_STATUS})` app.save(trails) }, (app) => { const trails = app.findCollectionByNameOrId('trails') trails.updateRule = STEWARD_OR_ADMIN app.save(trails) })