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

Mazanie držiteľov

model_roles a model_permissions sú polymorfné pivoty, preto nemôžu mať cudzí kľúč na tabuľku držiteľa — zmazaním používateľa jeho riadky s priradeniami zostanú. Ak vaša aplikácia niekedy znovu použije primárne kľúče (truncate a nový seed, importy, iné než autoinkrementálne stratégie), nový záznam so starým id by potichu zdedil roly a oprávnenia zmazaného držiteľa. Predídete tomu jedným z dvoch spôsobov.

Odpojenie pri mazaní

Volajte forgetAllAuthorization() z hooku deleting (alebo deleted) modelu — je to skratka pre Permissions::for($model)->forgetAllAuthorization(). Odpojí všetky roly a priame oprávnenia v jednej transakcii a po potvrdení zápisu vyprázdni cache:

use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Permissions\Concerns\HasRoles;

class User extends Authenticatable
{
    use HasRoles;

    protected static function booted(): void
    {
        static::deleting(fn (self $model) => $model->forgetAllAuthorization());
    }
}

Prečistenie osirotených riadkov

Alebo pravidelne upratujte. Permissions::pruneOrphans() zmaže riadky pivotov, ktorých model_type + model_id už neukazuje na existujúci model — vrátane riadkov, ktorých morph typ už nezodpovedá žiadnej triede — a vráti počet odstránených riadkov:

use RoundlyConsulting\Permissions\Facades\Permissions;

Permissions::pruneOrphans(); // int — rows deleted

Príkaz na prečistenie spraví to isté a vypíše počet:

php artisan permissions:prune-orphans

Naplánujte ho, nech beží automaticky:

// routes/console.php
use Illuminate\Support\Facades\Schedule;

Schedule::command('permissions:prune-orphans')->daily();

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.