Súkromie a oprávnenia
Jedno pravidlo (Support\EventVisibility) poháňa Event::scopeVisibleTo($viewer) — a s ním Events::visibleTo() a Events::browse() — aj EventPolicy::view, takže zoznam a detail sa nikdy nerozchádzajú:
| Kto | Draft | Public | Unlisted | Private |
|---|---|---|---|---|
| Správcovia | ✓ | ✓ | ✓ | ✓ |
| Pozvaní (čakajúci, prijatí) | — | ✓ | ✓ | ✓ |
| Účastníci (aktívne RSVP) | — | ✓ | ✓ | ✓ |
| Ktokoľvek s odkazom cez uuid | — | ✓ | ✓ | — |
| Zoznamy, vyhľadávanie, feedy, hľadanie podľa slugu | — | ✓ | správcovia, pozvaní, účastníci | správcovia, pozvaní, účastníci |
Podujatia len cez odkaz sa dajú nájsť len podľa uuid, nikdy podľa slugu pre cudzích a nikdy nie sú v zoznamoch.
Čo ktoré miesto skrýva
| Miesto | Pravidlo |
|---|---|
| browse(), index v API, vyhľadávanie | Viditeľné, verejne uvedené a ohlásené. |
| Route-model binding, Events::find() | Len podľa uuid, nikdy podľa poradového id ani slugu; bez pravidla viditeľnosti — overte view. |
| API | Skryté podujatie je 404, presne ako neexistujúce, na každom endpointe. |
| Odkaz na pripojenie (online_url) | Šifrovaný v databáze; len správcovia a účastníci so stavom going (viewOnlineUrl) — API, kalendárové súbory, notifikácie; nikdy vo feedoch ani v JSON-LD, ak nie je zapnuté expose_online_url. |
| Zoznam hostí | guest_list: hidden (správcovia), attendees (účastníci so stavom going), public (diváci). Záujemcovia, záznam o check-ine a filtre status / checked_in / tier sú len pre správcov. |
| Počty | Správcovia, alebo diváci pri show_counts — počty a seats_left podujatia a seats_left každého typu vstupenky; sort=popularity počíta skryté počty ako nulu. Či je podujatie plné, je verejné; čísla nie. |
| Kódy pre check-in | Šifrované, indexované cez hash, nikdy v zoznamoch správcov, doménových udalostiach, logoch ani v about; QR sa nikdy neukladá do cache. |
| Kalendárové súbory | Events::ics() vynechá podujatia, ktoré divák vidieť nesmie; ics($viewer) jedného podujatia vyhodí jednotnú EventNotFoundException; koncepty sa nikdy neexportujú. |
| JSON-LD a šablóny URL | Len verejné ohlásené podujatia (podujatia len cez odkaz pri seo.json_ld.unlisted), nikdy súkromné; podujatia len cez odkaz a súkromné nikdy nedostanú URL so {slug}. |
| Notifikácie | Príjemcovia sa filtrujú podľa viditeľnosti pri odoslaní a znova pri doručení; žiadne údaje iných účastníkov. |
| Verejné filtre | ?organizer= (feed) a filter[organizer] (index) nikdy nevyhľadávajú riadok organizátora — neprezradia, ktoré kľúče vašich používateľov existujú. |
| Zápisy cez API | Nikdy bez prihláseného Eloquent používateľa (401), bez ohľadu na events.routes.auth_middleware. |
Policy
Policies\EventPolicy a Policies\VenuePolicy sa zaregistrujú, ak nie je vypnuté events.authorization.register_policy. Events::for($event)->by($user) overí policy pred každým volaním — zápisy aj čítania, ktoré odhaľujú ľudí; bez by() je volanie dôveryhodným kódom:
| Oprávnenie | Kto |
|---|---|
viewAny | Ktokoľvek vrátane neprihlásených. |
view | Pravidlo viditeľnosti vyššie. |
create | Prihlásený, plus events.authorization.abilities.create, ak je nastavené. |
update, delete, restore, publish, unpublish, postpone, reschedule, cancel, complete, transition, moveOnline, manageTiers, invite, manageAttendees, checkIn, viewWaitlist | Správcovia. |
manageHosts, transfer | Schválení používatelia organizátora alebo administrátor. |
rsvp | view + pravidlá fázy a okna + pravidlo pozvánky pri súkromnom podujatí. |
viewAttendees | Správcovia; účastníci so stavom going pri guest_list = attendees; diváci pri public. |
viewInterested | Správcovia. |
viewCounts | Správcovia, alebo diváci pri show_counts. |
viewOnlineUrl | Správcovia a účastníci so stavom going. |
Nedefinované oprávnenie zamieta — pri nedefinovanom events.admin nie je administrátorom nikto. Policy vymeníte cez events.authorization.policy rozšírením triedy balíka. Pri vypnutej registrácii a bez vlastnej policy by() aj tak nikdy potichu nepovolí: opýta sa priamo nakonfigurovanej triedy.
Miesta konania
Miesto konania vidí ktokoľvek a akýkoľvek organizátor na ňom môže usporiadať podujatie. Vytvorenie vyžaduje prihláseného používateľa, plus abilities.venues, ak je nastavené. Vlastnené miesto spravujú schválení používatelia vlastníka a administrátori a vytvoriť ho môže len niekto, koho vlastník povoľuje, takže nikto nepodstrčí miesto do zoznamu iného tímu. Zdieľané miesto je pod podujatiami iných organizátorov, preto ho vytvárajú, upravujú, geokódujú či mažú len administrátori a držitelia abilities.shared_venues.
IP adresy návštevníkov
Geolocation::locateRequest($request), bežný začiatok hľadania v okolí, posiela IP adresu návštevníka poskytovateľom IP lokalizácie v geolocation-for-laravel. Uveďte to vo vyhlásení o ochrane súkromia alebo sa na polohu radšej opýtajte.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.