🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:Permission.php
<?php namespace Spatie\Permission\Models; use BackedEnum; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Support\Carbon; use Spatie\Permission\Contracts\Permission as PermissionContract; use Spatie\Permission\Exceptions\PermissionAlreadyExists; use Spatie\Permission\Exceptions\PermissionDoesNotExist; use Spatie\Permission\Guard; use Spatie\Permission\PermissionRegistrar; use Spatie\Permission\Support\Config; use Spatie\Permission\Traits\HasRoles; use Spatie\Permission\Traits\RefreshesPermissionCache; use function Illuminate\Support\enum_value; /** * @property int|string $id * @property string $name * @property string $guard_name * @property ?Carbon $created_at * @property ?Carbon $updated_at * @property-read Collection<int, Role> $roles * @property-read Collection<int, Model> $users */ class Permission extends Model implements PermissionContract { use HasRoles; use RefreshesPermissionCache; protected $guarded = []; public function __construct(array $attributes = []) { $attributes['guard_name'] ??= Guard::getDefaultName(static::class); parent::__construct($attributes); $this->guarded[] = $this->primaryKey; $this->table = Config::permissionsTable() ?: parent::getTable(); } /** * @return PermissionContract|Permission * * @throws PermissionAlreadyExists */ public static function create(array $attributes = []) { $attributes['guard_name'] ??= Guard::getDefaultName(static::class); $attributes['name'] = enum_value($attributes['name']); $permission = static::getPermission(['name' => $attributes['name'], 'guard_name' => $attributes['guard_name']]); if ($permission) { throw PermissionAlreadyExists::create($attributes['name'], $attributes['guard_name']); } return static::query()->create($attributes); } /** * A permission can be applied to roles. */ public function roles(): BelongsToMany { $registrar = app(PermissionRegistrar::class); return $this->belongsToMany( Config::roleModel(), Config::roleHasPermissionsTable(), $registrar->pivotPermission, $registrar->pivotRole ); } /** * A permission belongs to some users of the model associated with its guard. */ public function users(): BelongsToMany { return $this->morphedByMany( getModelForGuard($this->attributes['guard_name'] ?? config('auth.defaults.guard')), 'model', Config::modelHasPermissionsTable(), app(PermissionRegistrar::class)->pivotPermission, Config::morphKey() ); } /** * Find a permission by its name (and optionally guardName). * * @return PermissionContract|Permission * * @throws PermissionDoesNotExist */ public static function findByName(BackedEnum|string $name, ?string $guardName = null): PermissionContract { $name = enum_value($name); $guardName ??= Guard::getDefaultName(static::class); $permission = static::getPermission(['name' => $name, 'guard_name' => $guardName]); if (! $permission) { throw PermissionDoesNotExist::create($name, $guardName); } return $permission; } /** * Find a permission by its id (and optionally guardName). * * @return PermissionContract|Permission * * @throws PermissionDoesNotExist */ public static function findById(int|string $id, ?string $guardName = null): PermissionContract { $guardName ??= Guard::getDefaultName(static::class); $permission = static::getPermission([(new static)->getKeyName() => $id, 'guard_name' => $guardName]); if (! $permission) { throw PermissionDoesNotExist::withId($id, $guardName); } return $permission; } /** * Find or create permission by its name (and optionally guardName). * * @return PermissionContract|Permission */ public static function findOrCreate(BackedEnum|string $name, ?string $guardName = null): PermissionContract { $name = enum_value($name); $guardName ??= Guard::getDefaultName(static::class); $permission = static::getPermission(['name' => $name, 'guard_name' => $guardName]); if (! $permission) { return static::query()->create(['name' => $name, 'guard_name' => $guardName]); } return $permission; } /** * Get the current cached permissions. */ protected static function getPermissions(array $params = [], bool $onlyOne = false): Collection { return app(PermissionRegistrar::class) ->setPermissionClass(static::class) ->getPermissions($params, $onlyOne); } /** * Get the current cached first permission. * * @return PermissionContract|Permission|null */ protected static function getPermission(array $params = []): ?PermissionContract { /** @var PermissionContract|null */ return static::getPermissions($params, true)->first(); } }
Save Changes
Cancel
Create New File
Create New Folder