Beispiel #1
0
 public function user($username)
 {
     $user = new User();
     $user->setFirstName($username);
     $user->setLastName($username);
     $user->setUsername($username);
     $user->setPassword($username);
     $user->setMail($username . '@mail.com');
     $user->setGuid($username);
     $this->om->persist($user);
     if (!$this->userRole) {
         $this->userRole = new Role();
         $this->userRole->setName('ROLE_USER');
         $this->userRole->setTranslationKey('user');
         $this->om->persist($this->userRole);
     }
     $user->addRole($this->userRole);
     $workspace = new Workspace();
     $workspace->setName($username);
     $workspace->setCreator($user);
     $workspace->setCode($username);
     $workspace->setGuid($username);
     $this->om->persist($workspace);
     $user->setPersonalWorkspace($workspace);
     $this->om->flush();
     return $user;
 }
Beispiel #2
0
 /**
  * @param string $name
  *
  * @return Role
  */
 public function role($name)
 {
     $role = new Role();
     $role->setName($name);
     $role->setTranslationKey($name);
     $this->om->persist($role);
     return $role;
 }
Beispiel #3
0
 /**
  * @param string $name
  * @return Role
  */
 public function role($name)
 {
     $role = $this->om->getRepository('ClarolineCoreBundle:Role')->findOneByName($name);
     if (!$role) {
         $role = new Role();
         $role->setName($name);
         $role->setTranslationKey($name);
         $this->om->persist($role);
     }
     return $role;
 }
 /**
  * @EXT\Route(
  *     "/workspace/{workspace}/rights/form/role/{role}",
  *     name="claro_workspace_resource_rights_creation_form"
  * )
  *
  * @EXT\Template("ClarolineCoreBundle:Tool\workspace\resource_manager:resourceRightsCreation.html.twig")
  *
  * @param Workspace $workspace
  * @param Role $role
  *
  * @throws AccessDeniedException
  *
  * @return array
  */
 public function workspaceResourceRightsCreationFormAction(Workspace $workspace, Role $role)
 {
     $token = $this->get('security.token_storage')->getToken();
     if ($this->get('claroline.manager.rights_manager')->canEditPwsPerm($token)) {
         throw new AccessDeniedException();
     }
     $em = $this->get('doctrine.orm.entity_manager');
     if (!$this->get('security.authorization_checker')->isGranted('parameters', $workspace)) {
         throw new AccessDeniedException();
     }
     $node = $em->getRepository('ClarolineCoreBundle:Resource\\ResourceNode')->findWorkspaceRoot($workspace);
     $config = $em->getRepository('ClarolineCoreBundle:Resource\\ResourceRights')->findOneBy(array('resourceNode' => $node, 'role' => $role));
     $resourceTypes = $em->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findAll();
     return array('workspace' => $workspace, 'configs' => array($config), 'resourceTypes' => $resourceTypes, 'nodeId' => $node->getId(), 'roleId' => $role->getId(), 'tool' => $this->getResourceManagerTool());
 }
 /**
  * Constructor.
  */
 public function __construct(Role $role, AbstractRoleSubject $subject)
 {
     $receiver = null;
     $receiverGroup = null;
     $details = array('role' => array('name' => $role->getTranslationKey()));
     if ($role->getWorkspace()) {
         $details['workspace'] = array('name' => $role->getWorkspace()->getName());
     }
     if ($subject instanceof User) {
         $details['receiverUser'] = array('firstName' => $subject->getFirstName(), 'lastName' => $subject->getLastName());
         $action = self::ACTION_USER;
         $receiver = $subject;
     } else {
         $details['receiverGroup'] = array('name' => $subject->getName());
         $action = self::ACTION_GROUP;
         $receiverGroup = $subject;
     }
     parent::__construct($action, $details, $receiver, $receiverGroup, null, $role, $role->getWorkspace());
 }
Beispiel #6
0
 public function workspaceUser(Workspace $workspace, User $user)
 {
     $role = new Role();
     $role->setName("ROLE_WS_{$workspace->getName()}_{$user->getUsername()}");
     $role->setTranslationKey($role->getName());
     $role->setWorkspace($workspace);
     $user->addRole($role);
     $workspace->addRole($role);
     $this->om->persist($role);
     $this->om->persist($user);
     return $user;
 }
 /**
  * Constructor.
  */
 public function __construct(Role $role, AbstractRoleSubject $subject)
 {
     $this->role = $role;
     $this->workspaceOwners = array();
     $details = array('role' => array('name' => $role->getTranslationKey()));
     if ($role->getWorkspace()) {
         $details['workspace'] = array('name' => $role->getWorkspace()->getName(), 'id' => $role->getWorkspace()->getId());
         $managerRole = $role->getWorkspace()->getManagerRole();
         $this->workspaceOwners = $managerRole->getUsers();
     }
     if ($subject instanceof User) {
         $details['receiverUser'] = array('firstName' => $subject->getFirstName(), 'lastName' => $subject->getLastName(), 'username' => $subject->getUsername());
         $this->receiver = $subject;
     } else {
         $details['receiverGroup'] = array('name' => $subject->getName());
         $this->receiverGroup = $subject;
     }
     $this->details = $details;
     parent::__construct($this->getActionKey(), $details, $this->receiver, $this->receiverGroup, null, $role, $role->getWorkspace());
 }
Beispiel #8
0
 public function invertWorkspaceCreation(Role $role)
 {
     $role->setPersonalWorkspaceCreationEnabled(!$role->isPersonalWorkspaceCreationEnabled());
     $this->om->persist($role);
     $this->om->flush();
 }
 /**
  * Find ResourceRights for each descendant of a resource for a role.
  *
  * @param \Claroline\CoreBundle\Entity\Resource\ResourceNode $resource
  * @param \Claroline\CoreBundle\Entity\Role                  $role
  *
  * @return array
  */
 public function findRecursiveByResourceAndRole(ResourceNode $resource, Role $role)
 {
     $dql = "\n            SELECT rights, role, resource\n            FROM Claroline\\CoreBundle\\Entity\\Resource\\ResourceRights rights\n            JOIN rights.resourceNode resource\n            JOIN rights.role role\n            WHERE resource.path LIKE :path AND role.name = :roleName\n        ";
     $query = $this->_em->createQuery($dql);
     $query->setParameter('path', $resource->getPath() . '%');
     $query->setParameter('roleName', $role->getName());
     return $query->getResult();
 }
 public function testRemoveUserRoleActionIsProtected()
 {
     $this->logIn($this->userOrga);
     $this->client->request('GET', "/api/users/{$this->userOrga->getId()}/roles/{$this->baseRole->getId()}/remove.json");
     $this->assertEquals(403, $this->client->getResponse()->getStatusCode());
 }
 protected static function createRole($name, Workspace $workspace = null)
 {
     $role = new Role();
     $role->setName($name);
     $role->setTranslationKey($name);
     $role->setType(Role::PLATFORM_ROLE);
     if ($workspace) {
         $role->setType(Role::WS_ROLE);
         $role->setWorkspace($workspace);
     }
     self::create($name, $role);
 }
    public function countUsersOfGroupByRole(Group $group, Role $role)
    {
        $dql = '
            SELECT count(u) FROM Claroline\\CoreBundle\\Entity\\User u
            JOIN u.groups g
            WHERE g.name = :groupName
            AND u.id in
                (
                    SELECT u2.id FROM Claroline\\CoreBundle\\Entity\\User u2
                    LEFT JOIN u2.roles r1
                    LEFT JOIN u2.groups g2
                    LEFT JOIN g2.roles r2
                    WHERE r1.name = :roleName
                    OR r2.name = :roleName
                )

        ';
        $query = $this->_em->createQuery($dql);
        $query->setParameter('roleName', $role->getName());
        $query->setParameter('groupName', $group->getName());
        return $query->getSingleScalarResult();
    }
Beispiel #13
0
 /**
  * @EXT\Route(
  *     "role/{role}/edit/name/{name}",
  *     name="platform_role_name_edit",
  *     options={"expose"=true}
  * )
  * @EXT\Method("POST")
  *
  * @param Role $role
  * @return JsonResponse
  */
 public function editRoleNameAction(Role $role, $name)
 {
     if (ctype_space($name)) {
         return new JsonResponse(array('name' => $role->getName(), 'limit' => $role->getMaxUsers(), 'translationKey' => $role->getTranslationKey()), 500);
     }
     $role->setTranslationKey($name);
     $this->roleManager->edit($role);
     return new JsonResponse(array('name' => $role->getName(), 'limit' => $role->getMaxUsers(), 'translationKey' => $role->getTranslationKey()));
 }
Beispiel #14
0
 public function emptyRole(Role $role, $mode)
 {
     if ($mode === self::EMPTY_USERS) {
         $users = $role->getUsers();
         foreach ($users as $user) {
             $user->removeRole($role);
             $this->om->persist($user);
         }
     }
     if ($mode === self::EMPTY_GROUPS) {
         $groups = $role->getGroups();
         foreach ($groups as $group) {
             $group->removeRole($role);
             $this->om->persist($group);
         }
     }
     $this->om->persist($role);
     $this->om->flush();
 }
Beispiel #15
0
 private function createTeamDirectory(Team $team, Workspace $workspace, User $user, Role $teamRole, Role $teamManagerRole, ResourceNode $resource = null, array $creatableResources = array())
 {
     $rootDirectory = $this->resourceManager->getWorkspaceRoot($workspace);
     $directoryType = $this->resourceManager->getResourceTypeByName('directory');
     $resourceTypes = $this->resourceManager->getAllResourceTypes();
     $directory = $this->resourceManager->createResource('Claroline\\CoreBundle\\Entity\\Resource\\Directory', $team->getName());
     $teamRoleName = $teamRole->getName();
     $teamManagerRoleName = $teamManagerRole->getName();
     $rights = array();
     $rights[$teamRoleName] = array();
     $rights[$teamRoleName]['role'] = $teamRole;
     $rights[$teamRoleName]['create'] = array();
     $rights[$teamManagerRoleName] = array();
     $rights[$teamManagerRoleName]['role'] = $teamManagerRole;
     $rights[$teamManagerRoleName]['create'] = array();
     foreach ($resourceTypes as $resourceType) {
         $rights[$teamManagerRoleName]['create'][] = array('name' => $resourceType->getName());
     }
     foreach ($creatableResources as $creatableResource) {
         $rights[$teamRoleName]['create'][] = array('name' => $creatableResource->getName());
     }
     $decoders = $directoryType->getMaskDecoders();
     foreach ($decoders as $decoder) {
         $decoderName = $decoder->getName();
         $rights[$teamManagerRoleName][$decoderName] = true;
         if ($decoderName !== 'administrate' && $decoderName !== 'delete') {
             $rights[$teamRoleName][$decoderName] = true;
         }
     }
     $teamDirectory = $this->resourceManager->create($directory, $directoryType, $user, $workspace, $rootDirectory, null, $rights);
     if (!is_null($resource)) {
         $this->resourceManager->copy($resource, $teamDirectory->getResourceNode(), $user, true, true, $rights);
     }
     return $teamDirectory;
 }
 public function countGroupsByRole(Role $role)
 {
     $qb = $this->createQueryBuilder('grp')->select('COUNT(DISTINCT grp.id)')->leftJoin('grp.roles', 'roles')->andWhere('roles.id = :roleId')->setParameter('roleId', $role->getId());
     $query = $qb->getQuery();
     return $query->getSingleScalarResult();
 }