Trait HasRoles
Pridajte HasRoles do ľubovoľného autentifikovateľného modelu. Žiadny $guard_name nenastavujete:
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Permissions\Concerns\HasRoles;
class User extends Authenticatable
{
use HasRoles;
}HasRoles už obsahuje HasPermissions, takže tento jediný trait dá modelu priraďovanie rolí, priame udeľovanie oprávnení aj výpočet efektívnych oprávnení.
Relácie
Trait pridáva dve polymorfné relácie. Každá kontrola rešpektuje eager loading — ak je relácia načítaná, použije ju, inak ju načíta lenivo:
$user->roles(); // MorphToMany<Role> — the relation
$user->roles; // Collection<Role> assigned to this model
$user->permissions(); // MorphToMany<Permission> — direct grants
$user->permissions; // Collection<Permission>, direct grants onlyČo trait pridáva
- assignRole(), removeRole(), syncRoles() — správa rolí modelu.
- givePermissionTo(), revokePermissionTo(), syncPermissions() — správa jeho priamych oprávnení.
- hasRole(), hasPermissionTo() — overenie prístupu.
- getRoleNames(), getPermissionNames(), getDirectPermissions(), getAllPermissions() — čo model drží.
- forgetAllAuthorization() — odpojí všetky roly a priame oprávnenia, napríklad pred zmazaním modelu.
- role() — query scope, ktorý filtruje modely podľa roly.
Zapisujúce metódy sú len skratkou pre Permissions::for($model) — delegujú na ten istý PermissionsManager, takže sa uplatní aj vaše prepísanie v kontajneri a Permissions::fake() ich zaznamená. Čítanie zostáva na modeli.
Nielen používatelia
Roly a oprávnenia môže držať akýkoľvek Eloquent model — tímy, organizácie, API klienti. Gate v Laraveli autorizuje autentifikovateľných používateľov, preto sa integrácia can: týka vášho modelu používateľa; ostatných držiteľov overujte cez hasRole() a hasPermissionTo():
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Permissions\Concerns\HasRoles;
class Team extends Model
{
use HasRoles;
}
$team->assignRole('enterprise');
$team->givePermissionTo('billing.invoices.export');
$team->hasRole('enterprise'); // true
$team->hasPermissionTo('billing.invoices.export'); // truePrejavte 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.