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

Prepojiteľné modely

Na každý model, ktorý sa má zúčastňovať na prepojeniach, pridajte trait HasConnections a implementujte kontrakt Connectable:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Connections\Concerns\HasConnections;
use RoundlyConsulting\Connections\Contracts\Connectable;

class User extends Model implements Connectable
{
    use HasConnections;
}

class Team extends Model implements Connectable
{
    use HasConnections;
}

Prepojenia sú smerované. Connector je strana, ktorá prepojenie vytvára; connectable je strana, na ktorú smeruje. Model môže mať obe roly — používateľ sa môže prepojiť s tímom a tím s projektom:

$user->connectTo($team, ['view']);

$user->hasPermissionThroughConnection($team, 'view');  // true  — $user → $team exists
$team->hasPermissionThroughConnection($user, 'view');  // false — there is no $team → $user connection

$user->connections;  // connections $user initiated (it is the connector)
$team->connectors;   // connections pointing at $team (it is the connectable)

Generovanie cez make:connectable

php artisan make:connectable Organisation        # writes app/Models/Organisation.php
php artisan make:connectable User --existing      # prints the lines to add to an existing model

Bez --existing príkaz vytvorí nový model — do app/Models, ak tento priečinok existuje — ktorý už používa trait a implementuje kontrakt:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Connections\Concerns\HasConnections;
use RoundlyConsulting\Connections\Contracts\Connectable;

class Organisation extends Model implements Connectable
{
    use HasConnections;
}

Metódy traitu

HasConnections sprístupní ten istý životný cyklus ako metódy modelu — skratky nad fasádou Connections. Každý zápis ide cez ConnectionManager, takže volania traitu zachytí aj vlastná väzba manažéra, aj Connections::fake():

$user->connectTo($team, ['view', 'edit'], now()->addMonth()); // Connection
$user->disconnectFrom($team);                                  // void
$user->grantThroughConnection($team, 'publish');               // Connection
$user->revokeThroughConnection($team, 'publish');              // Connection
$user->syncConnectionPermissions($team, ['view']);             // Connection
$user->clearConnectionPermissions($team);                      // Connection
$user->permissionsThroughConnection($team);                    // Collection<int, string>
$user->syncConnections([$teamA, $teamB]);                      // SyncResult
MetódaVraciaČo robí
connectTo($connectable, $permissions = null, $expiresAt = null, $meta = null)ConnectionVytvorí prepojenie, pri existujúcom zmení len to, čo zadáte.
disconnectFrom($connectable)voidSoft delete; ak prepojenie neexistuje, vyhodí ConnectionNotFound.
toggleConnection($connectable, $permissions = null)?ConnectionAktívne prepojenie odpojí, inak prepojí.
reconnectTo($connectable)ConnectionObnoví soft-deleted prepojenie v pôvodnej podobe alebo vytvorí nové.
inviteConnection($connectable)ConnectionVytvorí prepojenie v stave pending; nad prijatým či zablokovaným vyhodí InvalidStatusTransition.
acceptConnectionFrom($connector)ConnectionPrijímajúca strana: prijme prepojenie od $connector.
blockConnectionFrom($connector)ConnectionPrijímajúca strana: zablokuje prepojenie od $connector.
grantThroughConnection($connectable, ...$permissions)ConnectionPridá oprávnenia; chýbajúce prepojenie vytvorí.
revokeThroughConnection($connectable, ...$permissions)ConnectionOdoberie oprávnenia; ak prepojenie chýba, vyhodí ConnectionNotFound.
syncConnectionPermissions($connectable, $permissions)ConnectionNastaví presne túto sadu (pole alebo Collection); chýbajúce prepojenie vytvorí.
clearConnectionPermissions($connectable)ConnectionVyprázdni sadu oprávnení; ak prepojenie neexistuje, vyhodí ConnectionNotFound.
syncConnections($connectables)SyncResultZosúladí prepojenia connectora presne s touto množinou.
permissionsThroughConnection($connectable)CollectionUložená sada oprávnení bez ohľadu na stav.

Kontroly (isConnectedTo(), hasPermissionThroughConnection() a ďalšie) opisujú sekcie Oprávnenia a Dopytovanie prepojení.

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.