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

Vlastné modely a tabuľky

Oba modely nie sú final a všade sa určujú cez konfiguráciu — nikdy pevne zadaným názvom triedy. Rozšírte ich o vlastné relácie, scopes či casty:

namespace App\Models;

use RoundlyConsulting\Permissions\Models\Role as BaseRole;

class Role extends BaseRole
{
    // your own relations, scopes, casts …
}
// config/permissions.php
'models' => [
    'role' => App\Models\Role::class,
    'permission' => App\Models\Permission::class,
],

Permissions::role(), Permissions::permission(), každé udelenie aj každá relácia potom používajú vašu triedu. Keďže riadky vznikajú ako vaša trieda, spúšťajú sa vaše model eventy a observery — a na váš model sa napojí aj invalidácia cache balíka:

use RoundlyConsulting\Permissions\Facades\Permissions;

$role = Permissions::role('editor');  // an App\Models\Role instance
Permissions::roleModel();             // App\Models\Role::class
Permissions::roleModel()::query();    // a query on your class
$user->roles;                         // Collection<App\Models\Role>

Nastavená trieda musí byť pôvodný Role či Permission alebo jeho podtrieda. Čokoľvek iné — Eloquent model, ktorý ho nerozširuje, či hodnota, ktorá vôbec nie je modelom — vyhodí InvalidConfigurationException s názvom kľúča; model z balíka ju nikdy potichu nenahradí.

Názvy tabuliek

Ľubovoľnú tabuľku premenujte v table_names pred migráciou — názvy stĺpcov sú pevné:

// config/permissions.php
'table_names' => [
    'roles' => 'acl_roles',
    'permissions' => 'acl_permissions',
    'permission_role' => 'acl_permission_role',
    'model_roles' => 'acl_model_roles',
    'model_permissions' => 'acl_model_permissions',
],

Nastavenie priamo v kóde

Na triedy modelov stačia Permissions::roleModel() a permissionModel(). Statické resolvery na PermissionRegistrar navyše sprístupňujú nastavené tabuľky a typ kľúča — volajú ich publikované migrácie a hodia sa aj pre vlastné dopyty a migrácie:

use RoundlyConsulting\Permissions\Support\PermissionRegistrar;

PermissionRegistrar::roleModel();              // configured Role class-string
PermissionRegistrar::permissionModel();        // configured Permission class-string

PermissionRegistrar::rolesTable();             // resolved table names
PermissionRegistrar::permissionsTable();
PermissionRegistrar::permissionRoleTable();
PermissionRegistrar::modelRolesTable();
PermissionRegistrar::modelPermissionsTable();

PermissionRegistrar::keyType();                // KeyType enum — BigInt, Uuid or Ulid

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.