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

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');    // true

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.