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

Máte tri rovnocenné vstupné body a výber je na vás. Fasáda je najkratšia a odporúčaná predvoľba. Manažér — RoundlyConsulting\Permissions\PermissionsManager, koreň fasády — ponúka to isté API ako explicitnú závislosť v konštruktore, bez statických volaní. Akcie sú jednoúčelové triedy s metódou execute(), vhodné na skladanie do vašich vlastných akcií, jobov a príkazov.

Injektovanie manažéra

use RoundlyConsulting\Permissions\PermissionsManager;

final class OnboardEditor
{
    public function __construct(private PermissionsManager $permissions) {}

    public function handle(User $user): void
    {
        $this->permissions->for($user)->assignRole($this->permissions->role('editor'));
    }
}

Permissions::fake() zaregistruje fake aj v kontajneri, takže manažér injektovaný po jeho vytvorení je práve fake — jeho zápisy sa zaznamenajú rovnako ako volania fasády.

Volanie akcie

Každý zápis do katalógu či priradení si z kontajnera vyžiada jednu akciu, takže prepísanie akcie v kontajneri platí pre fasádu, manažér aj traity. Všetky akcie nájdete v RoundlyConsulting\Permissions\Actions:

use RoundlyConsulting\Permissions\Actions\GrantRoles;
use RoundlyConsulting\Permissions\Actions\SyncFromEnum;
use RoundlyConsulting\Permissions\Enums\GrantMode;
use RoundlyConsulting\Permissions\Facades\Permissions;

app(GrantRoles::class)->execute($user, ['editor'], GrantMode::Additive);
app(SyncFromEnum::class)->execute(PostPermission::class, Permissions::permissionModel());

Metóda fasády → akcia

Metóda fasádyAkciaexecute()
role()FindOrCreateRole(string|BackedEnum $name): Role
permission()FindOrCreatePermission(string|BackedEnum $name): Permission
for()->assignRole() / syncRoles()GrantRoles(Model $holder, iterable $roles, GrantMode $mode): void
for()->removeRole()RemoveRoles(Model $holder, iterable $roles): void
for()->givePermissionTo() / syncPermissions()GrantPermissions(Model $holder, iterable $permissions, GrantMode $mode): void
for()->revokePermissionTo()RevokePermissions(Model $holder, iterable $permissions): void
for()->forgetAllAuthorization()ForgetAuthorization(Model $holder): void
syncFrom() / syncRolesFrom()SyncFromEnum(string $enum, string $model): SyncResult
pruneOrphans()PruneOrphans(): int

GrantMode::Additive nikdy neodpojí existujúce priradenia; GrantMode::Authoritative zo zadanej množiny spraví úplnú množinu. SyncFromEnum dostane triedu modelu, ako ktorý má riadky vytvárať — odovzdajte Permissions::permissionModel() alebo Permissions::roleModel() — a vráti SyncResult s created, existing a changed(). Priame volanie akcie obíde manažér, preto ho fake nezaznamená.

Resolvery konfigurácie

Statické resolvery na RoundlyConsulting\Permissions\Support\PermissionRegistrar — rolesTable(), permissionsTable(), permissionRoleTable(), modelRolesTable(), modelPermissionsTable(), keyType(), roleModel() a permissionModel() — sú tiež verejné: volajú ich publikované migrácie a môžu ich volať aj vaše migrácie či vlastné dopyty. Pozri Vlastné modely a tabuľky.

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.