private function checkRoleAccessToHomeTab(HomeTab $homeTab) { $workspace = $homeTab->getWorkspace(); $this->checkToolAccess($workspace); $canEdit = $this->hasWorkspaceEditionAccess($workspace); $homeTabRoles = $homeTab->getRoles(); $hasAccess = $canEdit || count($homeTabRoles) === 0; if (!$hasAccess) { $userRoleNames = $this->utils->getRoles($this->tokenStorage->getToken()); foreach ($homeTabRoles as $role) { $homeTabRoleName = $role->getName(); if (in_array($homeTabRoleName, $userRoleNames)) { $hasAccess = true; break; } } } if (!$hasAccess) { $exception = new WorkspaceAccessDeniedException(); $exception->setWorkspace($workspace); throw $exception; } }