/** * * @param string $attribute * @param \Tracker\Entity\Project $project * @param \Tracker\Entity\User $user * @return boolean * @throws \LogicException */ protected function isGranted($attribute, $project, $user = null) { // make sure there is a user object (i.e. that the user is logged in) if (!$user instanceof UserInterface) { return false; } // double-check that the User object is the expected entity. // It always will be, unless there is some misconfiguration of the // security system. if (!$user instanceof User) { throw new \LogicException('The user is somehow not our User class!'); } // If the current user have administrator rights, we should return true if ($user->getIsAdmin()) { return true; } switch ($attribute) { case self::VIEW: foreach ($project->getMembers() as $item) { if ($item->getMember()->getId() === $user->getId()) { return true; } } break; case self::EDIT: break; } return false; }
/** * * @param Request $request */ public function createAction(Request $request) { $this->get('breadcrumbs')->add('Home', 'homepage')->add('Projects', 'projects_list')->add('Manage project'); $project = new Project(); $project->setCreatedBy($this->getUser()); $form = $this->get('form.factory')->create(new ProjectType(), $project); if ($form->handleRequest($request)->isValid()) { $entity = $form->getData(); $this->persistAndFlush($entity); $this->addFlash('success', 'Project created successfuly!'); return $this->redirectToRoute('projects_list'); } return $this->render('projects/form.twig', array('title' => $this->trans('title.page.projects.create'), 'form' => $form->createView(), 'project' => null)); }
/** * Create new project * * @return void */ private function addProject() { $entity = new Entity\Project(); $createdBy = $this->entityManager->getReference('Tracker\\Entity\\User', 1); $entity->setTitle('Hello world'); $entity->setIsPublic(true); $entity->setDescription('First project for demo purpose only'); $entity->setCreatedBy($createdBy); $this->entityManager->persist($entity); }