public function deleteWidgetHomeTabConfig(WidgetHomeTabConfig $widgetHomeTabConfig) { $widgetOrder = $widgetHomeTabConfig->getWidgetOrder(); $homeTab = $widgetHomeTabConfig->getHomeTab(); $user = $widgetHomeTabConfig->getUser(); $workspace = $widgetHomeTabConfig->getWorkspace(); if (is_null($user) && is_null($workspace)) { $this->widgetHomeTabConfigRepo->updateAdminWidgetHomeTabConfig($homeTab, $widgetOrder); } elseif (is_null($workspace)) { $this->widgetHomeTabConfigRepo->updateWidgetHomeTabConfigByUser($homeTab, $widgetOrder, $user); } else { $this->widgetHomeTabConfigRepo->updateWidgetHomeTabConfigByWorkspace($homeTab, $widgetOrder, $workspace); } $this->om->remove($widgetHomeTabConfig); $this->om->flush(); }
/** * @EXT\Route( * "/api/workspace/home/tab/widget/{widgetHomeTabConfig}/delete", * name="api_delete_workspace_widget_home_tab_config", * options = {"expose"=true} * ) * * Deletes a widget * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function deleteAdminWidgetHomeTabConfigAction(WidgetHomeTabConfig $widgetHomeTabConfig) { $workspace = $widgetHomeTabConfig->getWorkspace(); $this->checkToolEditionAccess($workspace); $widgetInstance = $widgetHomeTabConfig->getWidgetInstance(); $datas = $this->serializer->serialize($widgetInstance, 'json', SerializationContext::create()->setGroups(['api_widget'])); $this->homeTabManager->deleteWidgetHomeTabConfig($widgetHomeTabConfig); $this->widgetManager->removeInstance($widgetInstance); $event = new LogWidgetWorkspaceDeleteEvent($workspace, json_decode($datas, true)); $this->eventDispatcher->dispatch('log', $event); return new JsonResponse($datas, 200); }
private function checkAdminAccessForWidgetHomeTabConfig(WidgetHomeTabConfig $whtc) { if ($whtc->getType() !== 'admin' || !is_null($whtc->getUser()) || !is_null($whtc->getWorkspace())) { throw new AccessDeniedException(); } }
private function checkWorkspaceAccessForWidgetHomeTabConfig(WidgetHomeTabConfig $widgetHomeTabConfig, Workspace $workspace) { $widgetHomeTabConfigWorkspace = $widgetHomeTabConfig->getWorkspace(); if ($widgetHomeTabConfig->getType() !== 'workspace' || is_null($widgetHomeTabConfigWorkspace) || $widgetHomeTabConfigWorkspace->getId() !== $workspace->getId()) { throw new AccessDeniedException(); } }