where('user_id', $user->getKey()) ->exists(); return $isMember ? Response::allow() : Response::denyAsNotFound(); } /** * Determine whether the user can view the model. */ public function view(User $user, Workspace $workspace): bool|Response { $isMember = WorkspaceMembership::query() ->where('user_id', $user->getKey()) ->where('workspace_id', $workspace->getKey()) ->exists(); return $isMember ? Response::allow() : Response::denyAsNotFound(); } /** * Determine whether the user can create models. */ public function create(User $user): bool|Response { $hasAnyMembership = WorkspaceMembership::query() ->where('user_id', $user->getKey()) ->exists(); if (! $hasAnyMembership) { return Response::denyAsNotFound(); } $rolesWithManageCapability = WorkspaceRoleCapabilityMap::rolesWithCapability(Capabilities::WORKSPACE_MANAGE); $canManageAnyWorkspace = WorkspaceMembership::query() ->where('user_id', $user->getKey()) ->whereIn('role', $rolesWithManageCapability) ->exists(); return $canManageAnyWorkspace ? Response::allow() : Response::deny(); } /** * Determine whether the user can update the model. */ public function update(User $user, Workspace $workspace): bool|Response { /** @var WorkspaceCapabilityResolver $resolver */ $resolver = app(WorkspaceCapabilityResolver::class); if (! $resolver->isMember($user, $workspace)) { return Response::denyAsNotFound(); } return $resolver->can($user, $workspace, Capabilities::WORKSPACE_MANAGE) ? Response::allow() : Response::deny(); } /** * Determine whether the user can delete the model. */ public function delete(User $user, Workspace $workspace): bool { return false; } /** * Determine whether the user can restore the model. */ public function restore(User $user, Workspace $workspace): bool { return false; } /** * Determine whether the user can permanently delete the model. */ public function forceDelete(User $user, Workspace $workspace): bool { return false; } }