Skip to content

Instantly share code, notes, and snippets.

@lucacastelnuovo
Created July 28, 2023 21:38
Show Gist options
  • Save lucacastelnuovo/c25416192a554b5b923d305856c35e38 to your computer and use it in GitHub Desktop.
Save lucacastelnuovo/c25416192a554b5b923d305856c35e38 to your computer and use it in GitHub Desktop.
Filament V3 multi-tenancy & laravel-permission role helper
<?php
namespace App\Models\Support;
use App\Models\Tenant;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Spatie\Permission\Traits\HasRoles as SpatieHasRoles;
trait HasRoles
{
use SpatieHasRoles;
public function rolesOnTenant(Tenant $tenant): BelongsToMany
{
$originalTenantId = getPermissionsTeamId();
setPermissionsTeamId($tenant);
$roles = $this->roles();
setPermissionsTeamId($originalTenantId);
return $roles;
}
public function syncRolesOnTenant(
Tenant $tenant,
array|\Spatie\Permission\Contracts\Role|\Illuminate\Support\Collection|string|int $roles
): self {
$originalTenantId = getPermissionsTeamId();
setPermissionsTeamId($tenant);
$this->syncRoles($roles);
setPermissionsTeamId($originalTenantId);
return $this;
}
public function assignRoleOnTenant(
Tenant $tenant,
array|string|int|\Spatie\Permission\Contracts\Role|\Illuminate\Support\Collection $role
): self {
$originalTenantId = getPermissionsTeamId();
setPermissionsTeamId($tenant);
$this->assignRole($role);
setPermissionsTeamId($originalTenantId);
return $this;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment