Open source
Connections for Laravel
composer require roundly-consulting/connections-for-laravelPrehľad
Prepojenia typu many-to-many medzi Eloquent modelmi, s oprávneniami pre každé prepojenie a voliteľnou expiráciou. Prepojte akýkoľvek model s akýmkoľvek iným — používateľa s tímom, organizáciu s projektom — zaznamenajte, čo smie každé prepojenie robiť, preveďte ho pozvánkou pending → accepted / blocked a nechajte expirované prepojenia upratať sa samé. Plynulá fasáda Connections, metódy traitu, samostatné akcie, eventy, voliteľný Gate hook a testovací fake zvládnu každú operáciu jedným čitateľným riadkom. Licencia MIT, bez runtime závislostí tretích strán okrem Laravelu a dvoch malých pomocných balíkov Roundly.
Čo získate
Prepojte akýkoľvek model s akýmkoľvek
Jedno polymorfné, smerované prepojenie na dvojicu — používateľ s tímom, organizácia s projektom. Opätovné prepojenie zmení len to, čo zadáte.
Oprávnenia pre každé prepojenie
Udeľujte, odoberajte, synchronizujte a mažte sady oprávnení; overujte jedno, niektoré alebo všetky, aj so zástupnými znakmi * a posts.*.
Pozvánky a stavy
Postup pending → accepted / blocked s vynútenými prechodmi stavov a eventom pri každom kroku. Prístup udeľujú len aktívne prepojenia.
Expirácia
expiresIn(), extend() a predvolená doba platnosti, k tomu príkaz na upratanie expirovaných a event pred vypršaním.
Hromadné operácie a synchronizácia
toMany()->connectAll() a ďalšie hromadné slovesá, from()->sync() zosúladí presnú množinu a vráti typovaný SyncResult.
Fasáda, DI alebo akcie
Jedna fasáda Connections, injektovateľný ConnectionManager alebo jednoúčelové akcie — plus deväť eventov životného cyklu a voliteľný hook Gate::before.
Testovací fake
Connections::fake() zaznamenáva zápisy cez fasádu, injektovaný manažér aj trait na asercie a zároveň zapisuje do vašej testovacej databázy.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie a spustenie migrácie a voliteľne publikovanie konfiguračného súboru.
Konfigurácia
Všetky konfiguračné kľúče a ich predvolené hodnoty — model, tabuľka, typ kľúča, cache, eventy, Gate, oprávnenia, stav a expirácia.
Databázová schéma
Jedna polymorfná tabuľka connections — morph kľúče, oprávnenia a meta v jsonb, stav, expirácia, soft deletes a unikátny index dvojice.
Prepojiteľné modely
Pridajte trait HasConnections a kontrakt Connectable na akýkoľvek model, vygenerujte ho cez make:connectable a používajte metódy traitu.
Fasáda Connections
Celé verejné API v jednej fasáde — buildery between() a from(), sada oprávnení permissions(), expiring(), prune(), flushCache() a fake().
DI a akcie
Namiesto fasády injektujte ConnectionManager alebo spúšťajte jednoúčelové akcie — s kompletnou mapou fasáda → akcia, DTO a výnimkami.
Oprávnenia
Udeľujte, odoberajte, synchronizujte a mažte oprávnenia prepojenia; overujte jedno, niektoré alebo všetky, aj so zástupnými znakmi.
Pozvánky a stavy
Schvaľovacie postupy: vytvárajte prepojenia v stave pending, prijímajte ich alebo blokujte z oboch strán a využite enum ConnectionStatus.
Expirácia
Nastavte prepojeniu expiráciu, posuňte ju alebo zrušte, určte predvolenú dobu platnosti a zistite, ako expirácia ovplyvňuje prístup.
Metadáta
Pripojte k prepojeniu ľubovoľný kontext v JSON stĺpci meta, čítajte ho bodkovou notáciou a pri opätovnom prepojení ho zlúčte alebo nahraďte.
Hromadné operácie a sync
Prepájajte, odpájajte, udeľujte a odoberajte naraz pre viac connectables alebo zosúlaďte presnú množinu cez from()->sync().
Prepínanie a obnova
Odpájanie cez soft deletes, prepínanie cez toggle() a návrat odstráneného prepojenia v pôvodnej podobe cez reconnect() alebo nanovo cez connect().
Dopytovanie prepojení
Zistite, kto je prepojený, prechádzajte oba smery, filtrujte scopes pre aktívne, expirované a oprávnenia a načítajte typované modely.
Eventy
Deväť eventov životného cyklu — vytvorenie, zmena, odstránenie, oprávnenia, pozvánky, zmeny stavu, obnova a upozornenie na expiráciu.
Integrácia s Gate
Zapnite hook Gate::before, aby $user->can('publish', $team) a ďalšie autorizačné kontroly Laravelu išli cez prepojenia.
Kešovanie
Kontroly oprávnení sa pamätajú pre každú dvojicu connector–connectable, invalidujú sa pri každom zápise a obídete ich cez force: true.
Artisan príkazy
Upracte expirované prepojenia, odošlite upozornenia pred expiráciou, generujte prepojiteľné modely a naplánujte údržbu.
Vlastný model prepojenia
Cez connections.model nasaďte vlastnú podtriedu Connection s ďalším správaním a zapojte voliteľné integrácie ako reports-for-laravel.
Testovanie
Zaznamenajte každý zápis cez Connections::fake() — fasáda, injektovaný manažér aj trait — overte každú operáciu a pripravte riadky cez factory.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13 a dva pomocné balíky Roundly, ktoré Composer nainštaluje automaticky.
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.