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

Databázová schéma a typy kľúčov

Balík používa päť tabuliek. Ich názvy pochádzajú z table_names; názvy stĺpcov sú pevné:

TabuľkaStĺpceKľúče
permissionsid, name (unikátne), description (jsonb, nullable), timestampsAutoinkrementálne id.
rolesid, name (unikátne), description (jsonb, nullable), timestampsAutoinkrementálne id.
permission_rolepermission_id, role_idOba cudzie kľúče sa pri zmazaní kaskádujú; primárny kľúč (permission_id, role_id).
model_rolesrole_id, model_type, model_idrole_id sa pri zmazaní kaskáduje; index (model_id, model_type); primárny kľúč (role_id, model_id, model_type).
model_permissionspermission_id, model_type, model_idpermission_id sa pri zmazaní kaskáduje; index (model_id, model_type); primárny kľúč (permission_id, model_id, model_type).

Väzby na držiteľov sú polymorfné (model_type + model_id), takže roly a oprávnenia môže držať akýkoľvek Eloquent model — nielen používateľ. Vlastné aliasy z morph mapy sa v pivotoch ukladajú rovnako ako kdekoľvek inde v Laraveli.

Typ kľúča držiteľov

key_type opisuje modely, ktoré držia roly a oprávnenia — nikdy nie vlastné tabuľky balíka, tie majú vždy autoinkrementálny kľúč. Určuje typ stĺpca model_id v dvoch polymorfných pivotoch:

key_typeStĺpec model_idPoužite, keď vaši držitelia…
bigintunsignedBigIntegerpoužívajú predvolené autoinkrementálne kľúče Laravelu (predvolené)
uuiduuidpoužívajú HasUuids
ulidulidpoužívajú HasUlids

Nastavte ho pred publikovaním a spustením migrácií — schéma sa vydaním zmrazí:

PERMISSIONS_KEY_TYPE=uuid
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Permissions\Concerns\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
    use HasUuids; // pairs with PERMISSIONS_KEY_TYPE=uuid
}

Nenastavený alebo prázdny kľúč znamená bigint; neznáma hodnota vyhodí InvalidConfigurationException z toolkitu, namiesto toho, aby potichu vytvorila kľúče bigint.

Zámerne bez soft deletes

Roly a oprávnenia nepoužívajú soft deletes: unikátny index na name by kolidoval so soft-zmazanými riadkami a každý pivot sa pri zmazaní kaskáduje — odstránením roly či oprávnenia zmiznú aj jeho priradenia.

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.