fix: Marker-Aktionen nur für Berechtigte anbieten

Der Button "Als erledigt markieren" stand bisher an jedem Marker,
obwohl die updateRule der Collection Änderungen nur dem Ersteller,
Trail-Paten oder Team-Admins erlaubt — für alle anderen scheiterte
toggleResolved mit einer stillen unhandled Rejection. Neuer Getter
TrailMarkerStore.canEdit() spiegelt die Regel im Frontend; der Button
ist jetzt entsprechend gegated und Fehler landen als sichtbarer Alert
statt zu verschwinden.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NBMBfip6BAG8VV9raSf6vu
This commit is contained in:
Daniel Michelberger 2026-08-06 19:28:46 +02:00
parent 7b1df79a37
commit 331c4cfed1

View file

@ -25,6 +25,23 @@ export class TrailMarkerStore {
return this.byTrail(trailId).filter((r) => !r.resolved)
}
/**
* Ändern darf, wer den Marker angelegt hat, sowie Trail-Paten und
* Team-Admins dieselbe Regel wie in der updateRule der Collection.
* Der Trail wird übergeben, weil der Store ihn nicht kennt.
*/
canEdit(marker: TrailMarkersResponse, stewards: string[], teamOwner?: string, teamAdmins: string[] = []): boolean {
const uid = auth.user?.id
if (!uid) return false
return (
marker.created_by === uid ||
stewards.includes(uid) ||
teamOwner === uid ||
teamAdmins.includes(uid)
)
}
async load() {
this.loading = true
this.error = null