public function testGetByRole() { $user1 = new User(); $user2 = new User(); $user3 = new User(); $user1->setUsername('user1'); $user1->setPassword('pwd1'); $user1->setEmail('*****@*****.**'); $user2->setUsername('user2'); $user2->setPassword('pwd2'); $user2->setEmail('*****@*****.**'); $user3->setUsername('user3'); $user3->setPassword('pwd3'); $user3->setEmail('*****@*****.**'); $permission1 = new Permission(); $permission2 = new Permission(); $permission1->setRoleName('ROLE_USER'); $permission1->addUser($user1); $permission2->setRoleName('ROLE_ADMIN'); $permission2->addUser($user2); $group1 = new Group(); $group2 = new Group(); $group1->setName('User'); $group1->addPermission($permission1); $group1->addUser($user3); $group2->setName('Admin'); $group2->addPermission($permission2); $group2->addUser($user3); self::$em->persist($user1); self::$em->persist($user2); self::$em->persist($user3); self::$em->persist($permission1); self::$em->persist($permission2); self::$em->persist($group1); self::$em->persist($group2); self::$em->flush(); $rootUserHandler = \Phake::mock('Modera\\SecurityBundle\\RootUserHandling\\RootUserHandlerInterface'); $service = new UserService(self::$em, $rootUserHandler); $this->assertEquals(array($user1, $user3), $service->getUsersByRole('ROLE_USER')); $this->assertEquals(array($user2, $user3), $service->getUsersByRole('ROLE_ADMIN')); $this->assertEquals(array($user1->getId(), $user3->getId()), $service->getIdsByRole('ROLE_USER')); $this->assertEquals(array($user2->getId(), $user3->getId()), $service->getIdsByRole('ROLE_ADMIN')); }
public function testGetRawRoles() { $user = new User(); $this->assertEquals(0, count($user->getRawRoles())); // --- $groupPermission = \Phake::mock(Permission::clazz()); $userPermission = \Phake::mock(Permission::clazz()); $group = \Phake::mock(Group::clazz()); \Phake::when($group)->getPermissions()->thenReturn([$groupPermission]); $user->addPermission($userPermission); $user->setGroups([$group]); $userRoles = $user->getRawRoles(); $this->assertEquals(2, count($userRoles)); $this->assertSame($groupPermission, $userRoles[0]); $this->assertSame($userPermission, $userRoles[1]); }
/** * @return array */ public function getConfig() { $em = $this->getDoctrine(); $groupEntityValidator = function (array $params, Group $group, DefaultEntityValidator $defaultValidator, array $config, ContainerInterface $container) use($em) { $validationResult = $defaultValidator->validate($group, $config); if (!$group->getRefName()) { return $validationResult; } /** @var Group[] $groupWithSuchRefNameList */ $groupWithSuchRefNameList = $em->getRepository(Group::clazz())->findByRefName($group->getRefName()); if (count($groupWithSuchRefNameList) > 0) { $groupWithSuchRefName = $groupWithSuchRefNameList[0]; if ($groupWithSuchRefName->getId() != $group->getId()) { $validationResult->addFieldError('refName', T::trans('This refName is taken. Consider use \'%groupName%\' group or change current reference name.', array('%groupName%' => $groupWithSuchRefName->getName()))); } } return $validationResult; }; $mapEntity = function (array $params, Group $group, DataMapperInterface $defaultMapper, ContainerInterface $container) { $defaultMapper->mapData($params, $group); /* * Because of unique constrain we cannot save '' value as refName. * Only one time can, actually. :) So, to allow user use groups without * refName we have to set null by force because of ExtJs empty form value * is ''. */ $refName = $group->getRefName(); if ($refName === '') { $group->setRefName(null); } else { /* * To help users avoid duplicates group we use normalizing for refName */ $group->setRefName(Group::normalizeRefNameString($refName)); } }; return array('entity' => Group::clazz(), 'security' => array('role' => ModeraBackendSecurityBundle::ROLE_ACCESS_BACKEND_TOOLS_SECURITY_SECTION, 'actions' => array('create' => ModeraBackendSecurityBundle::ROLE_MANAGE_PERMISSIONS, 'update' => ModeraBackendSecurityBundle::ROLE_MANAGE_PERMISSIONS, 'remove' => ModeraBackendSecurityBundle::ROLE_MANAGE_PERMISSIONS)), 'hydration' => array('groups' => array('list' => function (Group $group) { return array('id' => $group->getId(), 'name' => $group->getName(), 'usersCount' => count($group->getUsers())); }, 'delete-group' => ['name'], 'main-form' => ['id', 'name', 'refName'], 'compact-list' => ['id', 'name']), 'profiles' => array('list', 'compact-list', 'delete-group', 'edit-group' => array('main-form'))), 'format_new_entity_values' => function (array $params, array $config, NewValuesFactoryInterface $defaultImpl, ContainerInterface $container) { return array('refName' => null); }, 'new_entity_validator' => $groupEntityValidator, 'updated_entity_validator' => $groupEntityValidator, 'map_data_on_create' => $mapEntity, 'map_data_on_update' => $mapEntity); }
/** * Db Tables used in test. * * @return array */ private static function getTableClasses() { return array(Group::clazz()); }
public function testNormalizeRefNameString() { $this->assertEquals('QWERTY', Group::normalizeRefNameString('qwerty')); $this->assertEquals('QT', Group::normalizeRefNameString('!1q34%^&* ~@342T')); }
/** * @param $roleName * * @return array */ public function getIdsByRole($roleName) { $ids = array(); $qb = $this->em->createQueryBuilder(); $qb->select('p, u, g')->from(Permission::clazz(), 'p')->leftJoin('p.users', 'u')->leftJoin('p.groups', 'g')->where($qb->expr()->eq('p.roleName', ':roleName'))->setParameter('roleName', $roleName); $query = $qb->getQuery(); $permission = $query->getOneOrNullResult($query::HYDRATE_ARRAY); if ($permission) { foreach ($permission['users'] as $u) { $ids[] = $u['id']; } $groupIds = array(); foreach ($permission['groups'] as $g) { $groupIds[] = $g['id']; } if (count($groupIds)) { $qb = $this->em->createQueryBuilder(); $qb->select('g, u')->from(Group::clazz(), 'g')->leftJoin('g.users', 'u')->where($qb->expr()->in('g.id', $groupIds)); $groups = $qb->getQuery()->getArrayResult(); foreach ($groups as $g) { foreach ($g['users'] as $u) { $ids[] = $u['id']; } } } } return array_keys(array_flip($ids)); }
/** * @return array */ private static function getTablesClasses() { return array(Permission::clazz(), PermissionCategory::clazz(), User::clazz(), Group::clazz(), Activity::clazz()); }
/** * @param Group $group * * @return bool */ public function addToGroup(Group $group) { if (!$group->hasUser($this)) { $group->addUser($this); return true; } return false; }
/** * @return array */ public function getConfig() { return array('entity' => Group::clazz(), 'security' => array('role' => ModeraBackendSecurityBundle::ROLE_ACCESS_BACKEND_TOOLS_SECURITY_SECTION, 'actions' => array('create' => ModeraBackendSecurityBundle::ROLE_MANAGE_PERMISSIONS, 'update' => ModeraBackendSecurityBundle::ROLE_MANAGE_PERMISSIONS, 'remove' => ModeraBackendSecurityBundle::ROLE_MANAGE_PERMISSIONS)), 'hydration' => array('groups' => array('list' => function (Group $group) { return array('id' => $group->getId(), 'name' => $group->getName(), 'usersCount' => count($group->getUsers())); }, 'delete-group' => ['name'], 'main-form' => ['id', 'name'], 'compact-list' => ['id', 'name']), 'profiles' => array('list', 'compact-list', 'delete-group', 'edit-group' => array('main-form')))); }