Autorizácia
Nastavte approvals.authorization.enabled na true — alebo env premennú, ktorá prijme aj 1, yes a on (false, 0, no a off ju vypnú, pri prázdnej hodnote zostane vypnutá; čokoľvek iné vyhodí InvalidConfigurationException) — a každá cesta rozhodnutia prejde kontrolou cez Gate ability:
APPROVALS_AUTHORIZATION=trueBalík Gate nikdy nedefinuje sám — urobí to vaša aplikácia:
use Illuminate\Support\Facades\Gate;
Gate::define('decide-approval', fn ($user, $approvable) => $user->can('review', $approvable));Odmietnutie cez Gate vyhodí UnauthorizedApprovalException ešte predtým, než sa čokoľvek zapíše:
use RoundlyConsulting\Approvals\Exceptions\UnauthorizedApprovalException;
use RoundlyConsulting\Approvals\Facades\Approvals;
try {
Approvals::for($deployment)->as($intern)->approve();
} catch (UnauthorizedApprovalException $e) {
// the gate denied this actor — nothing was recorded
}Ako kontrola prebieha
- Stráži approve(), reject(), toggle(), ask() aj cancel() — cez fasádu, traity, testovacích pomocníkov aj akcie.
- Ability sa overuje cez Gate::forUser() voči schvaľovanému modelu pre model, ktorý koná, takže aktér nemusí byť prihlásený používateľ. Pri ask() je to vyžiadaný aktér.
- Pri delegovaní sa overuje konajúci zástupca, nie delegujúci.
- Kontrola menovaných schvaľovateľov žiadosti je samostatná a platí vždy.
Vlastný názov ability
// config/approvals.php
'authorization' => [
'enabled' => env('APPROVALS_AUTHORIZATION', false),
'ability' => 'review-deployment',
],
// App\Providers\AppServiceProvider::boot()
Gate::define('review-deployment', fn (User $user, Deployment $deployment) => $user->team_id === $deployment->team_id);Nenastavená hodnota (null alebo prázdna) znamená decide-approval; ability, ktorá nie je reťazcom, vyhodí InvalidConfigurationException namiesto overenia inej ability.
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.