Send permission to client via inertia data

This commit is contained in:
Constantin Graf
2024-04-24 13:40:57 +02:00
committed by Constantin Graf
parent a3196c4964
commit af447ce2c0
2 changed files with 32 additions and 0 deletions

View File

@@ -7,6 +7,8 @@ namespace App\Service;
use App\Models\Organization;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Jetstream\Jetstream;
use Laravel\Jetstream\Role;
class PermissionStore
{
@@ -40,4 +42,31 @@ class PermissionStore
return in_array($permission, $permissions, true);
}
/**
* @return array<string>
*/
public function getPermissions(Organization $organization): array
{
/** @var User|null $user */
$user = Auth::user();
if ($user === null) {
return [];
}
if (! $user->belongsToTeam($organization)) {
return [];
}
$role = $organization->users
->where('id', $user->getKey())
->first()
?->membership
?->role;
/** @var Role|null $roleObj */
$roleObj = Jetstream::findRole($role);
return $role !== null ? ($roleObj?->permissions ?? []) : [];
}
}