isOwner()){ throw new AccessDeniedHttpException(); } return parent::deleteAction($id); }*/ public function editAction($deprecatedId = null) { if(!$this->isOwner()){ throw new AccessDeniedHttpException(); } return parent::editAction($deprecatedId); } public function showAction($deprecatedId = null) { if(!$this->isOwner()){ throw new AccessDeniedHttpException(); } return parent::showAction($deprecatedId); // TODO: Change the autogenerated stub } /** * Export data to specified format. * * @param Request $request * * @return Response * * @throws AccessDeniedException If access is not granted * @throws \RuntimeException If the export format is invalid */ public function exportAction(Request $request = null) { //$request = $this->resolveRequest($request); $request = $this->getRequest(); $this->admin->checkAccess('export'); $format = $request->get('format'); $allowedExportFormats = (array) $this->admin->getExportFormats(); if (!in_array($format, $allowedExportFormats)) { throw new \RuntimeException( sprintf( 'Export in format `%s` is not allowed for class: `%s`. Allowed formats are: `%s`', $format, $this->admin->getClass(), implode(', ', $allowedExportFormats) ) ); } $filename = sprintf( 'export_%s_%s.%s', strtolower(substr($this->admin->getClass(), strripos($this->admin->getClass(), '\\') + 1)), date('Y_m_d_H_i_s', strtotime('now')), $format ); return $this->get('sonata.admin.exporter')->getResponse( $format, $filename, $this->admin->getDataSourceIterator() ); } /** * Delete action. * * @param int|string|null $id * * @throws NotFoundHttpException If the object does not exist * @throws AccessDeniedException If access is not granted * * @return Response|RedirectResponse */ public function deleteAction($id) // NEXT_MAJOR: Remove the unused $id parameter { $request = $this->getRequest(); $id = $request->get($this->admin->getIdParameter()); $object = $this->admin->getObject($id); if (!$object) { throw $this->createNotFoundException(sprintf('unable to find the object with id: %s', $id)); } $this->checkParentChildAssociation($request, $object); $this->admin->checkAccess('delete', $object); $preResponse = $this->preDelete($request, $object); if (null !== $preResponse) { return $preResponse; } if (Request::METHOD_DELETE === $this->getRestMethod()) { // check the csrf token $this->validateCsrfToken('sonata.delete'); $objectName = $this->admin->toString($object); try { $this->admin->delete($object); if ($this->isXmlHttpRequest()) { return $this->renderJson(['result' => 'ok'], Response::HTTP_OK, []); } $this->addFlash( 'sonata_flash_success', $this->trans( 'flash_delete_success', ['%name%' => $this->escapeHtml($objectName)], 'SonataAdminBundle' ) ); } catch (ModelManagerException $e) { } catch (ModelManagerException $e) { $this->handleModelManagerException($e); if ($this->isXmlHttpRequest()) { return $this->renderJson(['result' => 'error'], Response::HTTP_OK, []); } $this->addFlash( 'sonata_flash_error', $this->trans( 'flash_delete_error', ['%name%' => $this->escapeHtml($objectName)], 'SonataAdminBundle' ) ); } return $this->redirectTo($object); } // NEXT_MAJOR: Remove this line and use commented line below it instead $template = $this->admin->getTemplate('delete'); // $template = $this->templateRegistry->getTemplate('delete'); return $this->renderWithExtraParams($template, [ 'object' => $object, 'action' => 'delete', 'csrf_token' => $this->getCsrfToken('sonata.delete'), ], null); } private function checkParentChildAssociation(\Symfony\Component\HttpFoundation\Request $request, $object): void { if (!($parentAdmin = $this->admin->getParent())) { return; } // NEXT_MAJOR: remove this check if (!$this->admin->getParentAssociationMapping()) { return; } $parentId = $request->get($parentAdmin->getIdParameter()); $propertyAccessor = PropertyAccess::createPropertyAccessor(); $propertyPath = new PropertyPath($this->admin->getParentAssociationMapping()); if ($parentAdmin->getObject($parentId) !== $propertyAccessor->getValue($object, $propertyPath)) { // NEXT_MAJOR: make this exception @trigger_error( "Accessing a child that isn't connected to a given parent is" ." deprecated since sonata-project/admin-bundle 3.34 and won't be allowed in 4.0.", E_USER_DEPRECATED ); } } }