configuration = new CrudConfiguration(); } /** * @Route("/{page}", name="DeblanBlogBundlePostAdmin_index", defaults={"page" = "1"}, requirements={"page" = "\d+"}) * @Template() */ public function indexAction($page, Request $request) { return parent::indexAction($page, $request); } /** * @Route("/new", name="DeblanBlogBundlePostAdmin_new") * @Template() */ public function newAction(Request $request) { return parent::newAction($request); } /** * @Route("/edit/{id}", name="DeblanBlogBundlePostAdmin_edit") * @Template() * @ParamConverter("object", class="Deblan\Bundle\BlogBundle\Model\Post") */ public function editAction($object, Request $request) { if (!$this->canEditPost($object)) { return $this->accessDenied(); } return parent::editAction($object, $request); } /** * @Route("/remove/{id}/{token}", name="DeblanBlogBundlePostAdmin_remove") * @Template() * @ParamConverter("object", class="Deblan\Bundle\BlogBundle\Model\Post") */ public function removeAction($object, $token, Request $request) { if (!$this->canEditPost($object)) { return $this->accessDenied(); } return parent::removeAction($object, $token, $request); } /** * @Route("/batch", name="DeblanBlogBundlePostAdmin_batch") * @Template() * @Method({"POST"}) */ public function batchAction(Request $request) { return parent::batchAction($request); } /** * @Route("/filter/clear", name="DeblanBlogBundlePostAdmin_filter_clear") * @Template() */ public function clearFilterAction(Request $request) { return parent::clearFilterAction($request); } /** * @Route("/rank", name="DeblanBlogBundlePostAdmin_rank") * @Template("TrinityAdminBundle:BaseAdmin:rank.html.twig") * @Method({"POST"}) */ public function rankAction(Request $request) { return parent::rankAction($request); } public function postSave($object, $was_new = false) { if ($object->getUserId() === null) { $object->setUser($this->getUser())->save(); } } public function canEditPost(Post $post) { return $this->getUser()->hasRole('ROLE_SUPER_ADMIN') || $post->getUserId() === $this->getUser()->getId(); } public function accessDenied() { $this->getSessionUser()->setFlash('message', new FlashError('Vous n\'avez pas les permissions nécessaires'), false, $this->getConfiguration()->getStorageNamespace()); return $this->redirect($this->generateUrl('DeblanBlogBundlePostAdmin_index')); } protected function getQuery() { $query = parent::getQuery(); if ($this->getUser()->hasRole('ROLE_SUPER_ADMIN')) { return $query; } $query->filterByUserId($this->getUser()->getId()); return $query; } }