NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Events for Laravel

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ú:

KtoDraftPublicUnlistedPrivate
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ícisprá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

MiestoPravidlo
browse(), index v API, vyhľadávanieViditeľ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.
APISkryté 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čtySprá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úboryEvents::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 URLLen 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áciePrí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 APINikdy 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ávnenieKto
viewAnyKtokoľvek vrátane neprihlásených.
viewPravidlo viditeľnosti vyššie.
createPrihlásený, plus events.authorization.abilities.create, ak je nastavené.
update, delete, restore, publish, unpublish, postpone, reschedule, cancel, complete, transition, moveOnline, manageTiers, invite, manageAttendees, checkIn, viewWaitlistSprávcovia.
manageHosts, transferSchválení používatelia organizátora alebo administrátor.
rsvpview + pravidlá fázy a okna + pravidlo pozvánky pri súkromnom podujatí.
viewAttendeesSprávcovia; účastníci so stavom going pri guest_list = attendees; diváci pri public.
viewInterestedSprávcovia.
viewCountsSprávcovia, alebo diváci pri show_counts.
viewOnlineUrlSprá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 kryptomien

Odoslaní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.