Inheritance: extends Sulu\Bundle\CoreBundle\Entity\ApiEntity, implements Sulu\Component\Persistence\Model\AuditableInterface
Exemplo n.º 1
0
 public function testPut()
 {
     $client = $this->createAuthenticatedClient();
     $client->request('PUT', '/api/users/' . $this->user1->getId(), ['username' => 'manager', 'password' => 'verysecurepassword', 'locale' => 'en', 'contact' => ['id' => $this->contact1->getId()], 'userRoles' => [['id' => $this->user1->getId(), 'role' => ['id' => $this->role1->getId()], 'locales' => ['de', 'en']], ['id' => 2, 'role' => ['id' => $this->role2->getId()], 'locales' => ['en']]], 'userGroups' => [['group' => ['id' => $this->group1->getId()], 'locales' => ['de', 'en']], ['group' => ['id' => $this->group2->getId()], 'locales' => ['en']]]]);
     $response = json_decode($client->getResponse()->getContent());
     $this->assertEquals('manager', $response->username);
     $this->assertEquals($this->contact1->getId(), $response->contact->id);
     $this->assertEquals('en', $response->locale);
     $this->assertEquals('Role1', $response->userRoles[0]->role->name);
     $this->assertEquals('de', $response->userRoles[0]->locales[0]);
     $this->assertEquals('en', $response->userRoles[0]->locales[1]);
     $this->assertEquals('Role2', $response->userRoles[1]->role->name);
     $this->assertEquals('en', $response->userRoles[1]->locales[0]);
     $this->assertEquals('Group1', $response->userGroups[0]->group->name);
     $this->assertEquals('de', $response->userGroups[0]->locales[0]);
     $this->assertEquals('en', $response->userGroups[0]->locales[1]);
     $this->assertEquals('Group2', $response->userGroups[1]->group->name);
     $this->assertEquals('en', $response->userGroups[1]->locales[0]);
     $client->request('GET', '/api/users/' . $this->user1->getId());
     $response = json_decode($client->getResponse()->getContent());
     $this->assertEquals('manager', $response->username);
     $this->assertEquals($this->contact1->getId(), $response->contact->id);
     $this->assertEquals('en', $response->locale);
     $this->assertEquals('Role1', $response->userRoles[0]->role->name);
     $this->assertEquals('de', $response->userRoles[0]->locales[0]);
     $this->assertEquals('en', $response->userRoles[0]->locales[1]);
     $this->assertEquals('Role2', $response->userRoles[1]->role->name);
     $this->assertEquals('en', $response->userRoles[1]->locales[0]);
     $this->assertEquals('Group1', $response->userGroups[0]->group->name);
     $this->assertEquals('de', $response->userGroups[0]->locales[0]);
     $this->assertEquals('en', $response->userGroups[0]->locales[1]);
     $this->assertEquals('Group2', $response->userGroups[1]->group->name);
     $this->assertEquals('en', $response->userGroups[1]->locales[0]);
 }
Exemplo n.º 2
0
 public function setUp()
 {
     $this->user = new User();
     $this->userRole = new UserRole();
     $this->role = new Role();
     $this->permission = new Permission();
     $this->permission->setPermissions(122);
     $this->permission->setContext('sulu.security.roles');
     $this->role->addPermission($this->permission);
     $this->userRole->setRole($this->role);
     $this->user->addUserRole($this->userRole);
     $this->userGroup = new UserGroup();
     $this->group = new Group();
     $this->role = new Role();
     $this->permission = new Permission();
     $this->permission->setPermissions(122);
     $this->permission->setContext('sulu.security.groups');
     $this->role->addPermission($this->permission);
     $this->group->addRole($this->role);
     $this->userGroup->setGroup($this->group);
     $this->nestedGroup = new Group();
     $this->role = new Role();
     $this->permission = new Permission();
     $this->permission->setPermissions(122);
     $this->permission->setContext('sulu.security.groups.nested');
     $this->role->addPermission($this->permission);
     $this->nestedGroup->addRole($this->role);
     $this->group->addChildren($this->nestedGroup);
     $this->user->addUserGroup($this->userGroup);
     $this->token = $this->prophesize(TokenInterface::class);
     $this->token->getUser()->willReturn($this->user);
     $this->aclProvider = $this->prophesize(AclProviderInterface::class);
     $this->aclProvider->findAcl(Argument::any())->willReturn(true);
     $this->voter = new SecurityContextVoter($this->permissions, $this->aclProvider->reveal());
 }
Exemplo n.º 3
0
 public function testDelete()
 {
     $client = $this->createAuthenticatedClient();
     $client->request('GET', '/api/groups');
     $response = json_decode($client->getResponse()->getContent());
     $this->assertEquals(200, $client->getResponse()->getStatusCode());
     $this->assertEquals(2, count($response->_embedded->groups));
     $client->request('DELETE', '/api/groups/' . $this->group1->getId());
     $this->assertEquals(204, $client->getResponse()->getStatusCode());
     $client->request('GET', '/api/groups');
     $response = json_decode($client->getResponse()->getContent());
     $this->assertEquals(200, $client->getResponse()->getStatusCode());
     $this->assertEquals(1, count($response->_embedded->groups));
 }
Exemplo n.º 4
0
 /**
  * Adds the given role to the group.
  *
  * @param Group $group
  * @param array $roleData
  *
  * @return bool
  *
  * @throws \Sulu\Component\Rest\Exception\EntityNotFoundException
  */
 private function addRole(Group $group, $roleData)
 {
     if (isset($roleData['id'])) {
         $role = $this->get('sulu.repository.role')->findRoleById($roleData['id']);
         if (!$role) {
             throw new EntityNotFoundException($this->get('sulu.repository.role')->getClassName(), $roleData['id']);
         }
         if (!$group->getRoles()->contains($role)) {
             $group->addRole($role);
         }
     }
     return true;
 }
Exemplo n.º 5
0
 /**
  * Checks if the given group has the permission to execute the desired task.
  *
  * @param SecurityCondition $object
  * @param int               $attribute
  * @param Group             $group
  * @param array             $locales
  *
  * @return bool
  */
 public function checkUserGroup($object, $attribute, Group $group, $locales)
 {
     // check if the group contains the permission
     foreach ($group->getRoles() as $role) {
         /** @var RoleInterface $role */
         if ($this->checkPermissions($object, $attribute, $role->getPermissions(), $locales)) {
             return true;
         }
     }
     // check if one of the child group contains the permission
     $children = $group->getChildren();
     if (!empty($children)) {
         foreach ($children as $child) {
             if ($this->checkUserGroup($object, $attribute, $child, $locales)) {
                 return true;
             }
         }
     }
     return false;
 }
Exemplo n.º 6
0
 public function setUp()
 {
     $this->em = $this->db('ORM')->getOm();
     $this->purgeDatabase();
     // email
     $emailType = new EmailType();
     $emailType->setName('Private');
     $this->em->persist($emailType);
     $email = new Email();
     $email->setEmail('*****@*****.**');
     $email->setEmailType($emailType);
     $this->em->persist($email);
     $email2 = new Email();
     $email2->setEmail('*****@*****.**');
     $email2->setEmailType($emailType);
     $this->em->persist($email2);
     // Contact
     $contact1 = new Contact();
     $contact1->setFirstName('Max');
     $contact1->setLastName('Muster');
     $contact1->addEmail($email);
     $this->em->persist($contact1);
     $contact2 = new Contact();
     $contact2->setFirstName('Maria');
     $contact2->setLastName('Musterfrau');
     $contact2->addEmail($email2);
     $this->em->persist($contact2);
     $this->em->flush();
     $role1 = new Role();
     $role1->setName('Role1');
     $role1->setSystem('Sulu');
     $this->em->persist($role1);
     $role2 = new Role();
     $role2->setName('Role2');
     $role2->setSystem('Test');
     $this->em->persist($role2);
     // User 1
     $user = new User();
     $user->setUsername('admin');
     $user->setEmail('*****@*****.**');
     $user->setPassword('securepassword');
     $user->setPasswordResetToken('mySuperSecretToken');
     $user->setSalt('salt');
     $user->setLocale('de');
     $user->setContact($contact1);
     $this->em->persist($user);
     // User 2
     $user2 = new User();
     $user2->setUsername('test');
     $user2->setEmail('*****@*****.**');
     $user2->setPassword('securepassword');
     $user2->setSalt('salt');
     $user2->setLocale('de');
     $user2->setContact($contact2);
     $this->em->persist($user2);
     $this->em->flush();
     $userRole1 = new UserRole();
     $userRole1->setRole($role1);
     $userRole1->setUser($user);
     $userRole1->setLocale(json_encode(['de', 'en']));
     $this->em->persist($userRole1);
     $userRole2 = new UserRole();
     $userRole2->setRole($role2);
     $userRole2->setUser($user2);
     $userRole2->setLocale(json_encode(['de', 'en']));
     $this->em->persist($userRole2);
     $permission1 = new Permission();
     $permission1->setPermissions(122);
     $permission1->setRole($role1);
     $permission1->setContext('Context 1');
     $this->em->persist($permission1);
     $permission2 = new Permission();
     $permission2->setPermissions(122);
     $permission2->setRole($role2);
     $permission2->setContext('Context 2');
     $this->em->persist($permission2);
     // user groups
     $group1 = new Group();
     $group1->setName('Group1');
     $group1->setLft(0);
     $group1->setRgt(0);
     $group1->setDepth(0);
     $this->em->persist($group1);
     $group2 = new Group();
     $group2->setName('Group2');
     $group2->setLft(0);
     $group2->setRgt(0);
     $group2->setDepth(0);
     $this->em->persist($group2);
     $this->em->flush();
 }