コード例 #1
0
 /**
  * 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());
 }
コード例 #2
0
 /**
  * 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());
 }
コード例 #3
0
 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();
 }
コード例 #4
0
 /**
  * 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);
 }
コード例 #5
0
 /**
  * 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;
 }