/** * @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; }
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(); }
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(); }
/** * @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())); }
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; }