-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How do I specify a guard when creating a new permission? #1415
Comments
Can you explain why that would help you? What's the business problem you're trying to solve? |
I'm currently trying to create an Admin Package that uses I also don't want to replace the public function __construct(array $attributes = [])
{
$attributes['guard_name'] = $attributes['guard_name'] ?? static::getGuard();
parent::__construct($attributes);
$this->setTable(config('permission.table_names.permissions'));
}
public static function create(array $attributes = [])
{
$attributes['guard_name'] = $attributes['guard_name'] ?? static::getGuard();
if (static::getPermissions()->where('name', $attributes['name'])->where('guard_name', $attributes['guard_name'])->first()) {
throw PermissionAlreadyExists::create($attributes['name'], $attributes['guard_name']);
}
return static::query()->create($attributes);
}
/**
* 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 ?? static::getGuard();
$permission = static::getPermissions()->where('name', $name)->where('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 ?? static::getGuard();
$permission = static::getPermissions()->where('id', $id)->where('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 ?? static::getGuard();
$permission = static::getPermissions()->where('name', $name)->where('guard_name', $guardName)->first();
if (! $permission) {
return static::create(['name' => $name, 'guard_name' => $guardName]);
}
return $permission;
} |
Would the changes we're working on in #1384 solve your problem? |
I found an alternate solution to set my default guard for the new permissions and role. Thanks. Permission::create([
'guard_name' => 'admin'
]); |
Regarding
Spatie\Permission\Models\Permissions
andSpatie\Permission\Models\Role
Would it be possible to separate
config('auth.defaults.guard');
to another method likeguard()
? So it can be easier to extendCurrent implementation
Proposed Implementation
The text was updated successfully, but these errors were encountered: