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 UlidPrejavte 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.