Esempio n. 1
0
 /**
  * @param Workspace $workspace
  * @param User      $user
  *
  * @return User
  */
 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);
     $this->om->persist($role);
     $this->om->persist($user);
     return $user;
 }
Esempio n. 2
0
 public function getWorkspaceRoleBaseName(Role $role)
 {
     if ($role->getWorkspace()) {
         return substr($role->getName(), 0, strrpos($role->getName(), '_'));
     }
     return $role->getName();
 }
 /**
  * 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();
 }
Esempio n. 4
0
    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();
    }
Esempio n. 5
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()));
 }
Esempio n. 6
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;
 }