/home/techb158/ileadtechnology.com/SSM/vendor/spatie/laravel-permission/src/Models
Edit: /home/techb158/ileadtechnology.com/SSM/vendor/spatie/laravel-permission/src/Models/Permission.php (4618B)
setTable(config('permission.table_names.permissions'));
}
public static function create(array $attributes = [])
{
$attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class);
$permission = static::getPermissions(['name' => $attributes['name'], 'guard_name' => $attributes['guard_name']])->first();
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
{
return $this->belongsToMany(
config('permission.models.role'),
config('permission.table_names.role_has_permissions'),
'permission_id',
'role_id'
);
}
/**
* A permission belongs to some users of the model associated with its guard.
*/
public function users(): MorphToMany
{
return $this->morphedByMany(
getModelForGuard($this->attributes['guard_name']),
'model',
config('permission.table_names.model_has_permissions'),
'permission_id',
config('permission.column_names.model_morph_key')
);
}
/**
* Find a permission by its name (and optionally guardName).
*
* @param string $name
* @param string|null $guardName
*
* @throws \Spatie\Permission\Exceptions\PermissionDoesNotExist
*
* @return \Spatie\Permission\Contracts\Permission
*/
public static function findByName(string $name, $guardName = null): PermissionContract
{
$guardName = $guardName ?? Guard::getDefaultName(static::class);
$permission = static::getPermissions(['name' => $name, 'guard_name' => $guardName])->first();
if (! $permission) {
throw PermissionDoesNotExist::create($name, $guardName);
}
return $permission;
}
/**
* Find a permission by its id (and optionally guardName).
*
* @param int $id
* @param string|null $guardName
*
* @throws \Spatie\Permission\Exceptions\PermissionDoesNotExist
*
* @return \Spatie\Permission\Contracts\Permission
*/
public static function findById(int $id, $guardName = null): PermissionContract
{
$guardName = $guardName ?? Guard::getDefaultName(static::class);
$permission = static::getPermissions(['id' => $id, 'guard_name' => $guardName])->first();
if (! $permission) {
throw PermissionDoesNotExist::withId($id, $guardName);
}
return $permission;
}
/**
* Find or create permission by its name (and optionally guardName).
*
* @param string $name
* @param string|null $guardName
*
* @return \Spatie\Permission\Contracts\Permission
*/
public static function findOrCreate(string $name, $guardName = null): PermissionContract
{
$guardName = $guardName ?? Guard::getDefaultName(static::class);
$permission = static::getPermissions(['name' => $name, 'guard_name' => $guardName])->first();
if (! $permission) {
return static::query()->create(['name' => $name, 'guard_name' => $guardName]);
}
return $permission;
}
/**
* Get the current cached permissions.
*/
protected static function getPermissions(array $params = []): Collection
{
return app(PermissionRegistrar::class)
->setPermissionClass(static::class)
->getPermissions($params);
}
}