/** * Lists all UserProjects entities. * * @Route("/{id}", name="members_list") * @Method("GET") * @Template() */ public function membersListAction($id) { $em = $this->getDoctrine()->getManager(); $project = $em->getRepository('VersionControlGitControlBundle:Project')->find($id); if (!$project) { throw $this->createNotFoundException('Unable to find Project entity.'); } $this->checkProjectAuthorization($project); $userProjects = $em->getRepository('VersionControlGitControlBundle:UserProjects')->findByProject($project); $userProject = new UserProjects(); $userProject->setProject($project); $form = $this->createCreateForm($userProject, $project); $editForm = $this->createEditForm(); return array('userProjects' => $userProjects, 'project' => $project, 'form' => $form->createView(), 'edit_form' => $editForm->createView()); }
/** * Creates a new Project entity. * * @Route("/", name="project_create") * @Method("POST") * @Template("VersionControlGitControlBundle:Project:new.html.twig") */ public function createAction(Request $request) { $project = new Project(); $form = $this->createCreateForm($project); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); //Get User $user = $this->get('security.token_storage')->getToken()->getUser(); //Set Creator $project->setCreator($user); //Set Access and Roles $userProjectAccess = new UserProjects(); $userProjectAccess->setUser($user); $userProjectAccess->setRoles('Owner'); $project->addUserProjects($userProjectAccess); $em->persist($project); $em->flush(); return $this->redirect($this->generateUrl('project_edit', array('id' => $project->getId()))); } return array('entity' => $project, 'form' => $form->createView()); }
protected function loadTestData(ObjectManager $em) { $user = $this->loadUserData($em, 'test', 'test', '*****@*****.**', 'Test Test'); //Set Creator $project = new Project(); $project->setTitle('Test Project'); $project->setDescription('Project used for testing only'); $project->setCreator($user); //Set Access and Roles $userProjectAccess = new UserProjects(); $userProjectAccess->setUser($user); $userProjectAccess->setRoles('Owner'); $project->addUserProjects($userProjectAccess); $em->persist($project); $em->flush(); $projectEnvironment = new ProjectEnvironment(); $projectEnvironment->setProject($project); $projectEnvironment->setTitle('Current Project'); $projectEnvironment->setDescription('Test project environment showing this systems git repo'); $projectEnvironment->setPath($this->rootDir); $em->persist($projectEnvironment); $em->flush(); }
/** * Sets the Access Control Level for the user for this project. * * @param UserProjects $userProject * * @throws AccessDeniedException */ protected function createACLSettings(UserProjects $userProject) { // creating the ACL $user = $userProject->getUser(); $project = $userProject->getProject(); $aclProvider = $this->container->get('security.acl.provider'); $objectIdentity = ObjectIdentity::fromDomainObject($project); // retrieving the security identity of the currently logged-in user $securityIdentity = UserSecurityIdentity::fromAccount($user); try { $acl = $aclProvider->findAcl($objectIdentity); //Delete any Exisitng acls for this users. Only the Username seems to work $aces = $acl->getObjectAces(); foreach ($aces as $i => $ace) { if ($ace->getSecurityIdentity()->equals($securityIdentity)) { //if($ace->getSecurityIdentity()->getUsername() == $user->getUsername()){ // Got it! Let's remove it! $acl->deleteObjectAce($i); } } } catch (\Symfony\Component\Security\Acl\Exception\AclNotFoundException $e) { $acl = $aclProvider->createAcl($objectIdentity); } // grant owner access if ($userProject->getRoles() == 'Reporter') { $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_VIEW); } elseif ($userProject->getRoles() == 'Developer') { $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OPERATOR); } elseif ($userProject->getRoles() == 'Master') { $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_MASTER); } elseif ($userProject->getRoles() == 'Owner') { $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER); } else { throw new AccessDeniedException('User Role is not valid'); } $aclProvider->updateAcl($acl); }
/** * Add user access to project. * * @param \VersionControl\GitControlBundle\Entity\UserProjects $userProject * * @return resource */ public function addUserProjects(\VersionControl\GitControlBundle\Entity\UserProjects $userProject) { $userProject->setProject($this); $this->userProjects[] = $userProject; return $this; }