DI a akcie
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ády | Akcia | execute() |
|---|---|---|
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 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.