public function setUp()
 {
     self::$em->clear();
     self::$kernel->resetDatabase([self::$em->getClassMetadata('BackBee\\Security\\Group'), self::$em->getClassMetadata('BackBee\\Site\\Site')], true);
     self::$kernel->resetAclSchema();
     $group = new Group();
     $group->setName('Super Admin');
     self::$em->persist($group);
     self::$em->flush();
 }
예제 #2
0
 protected function setUp()
 {
     $this->bbapp = $this->getBBApp();
     $this->initDb($this->bbapp);
     $this->initAcl();
     $superAdminGroup = new Group();
     $superAdminGroup->setName('Super Admin');
     $this->bbapp->getEntityManager()->persist($superAdminGroup);
     $adminGroup = new Group();
     $adminGroup->setName('Super Admin');
     $this->bbapp->getEntityManager()->persist($adminGroup);
     $this->siteDefault = new Site();
     $this->siteDefault->setLabel('default');
     $this->getBBApp()->getEntityManager()->persist($this->siteDefault);
     $this->getBBApp()->getEntityManager()->flush();
     $loader = new YmlLoader();
     $loader->setContainer($this->getBBApp()->getContainer());
     $loader->load(file_get_contents(__DIR__ . '/acl.yml'));
 }
예제 #3
0
 protected function setUp()
 {
     $this->initAutoload();
     $bbapp = $this->getBBApp();
     $this->initDb($bbapp);
     $this->initAcl();
     $this->getBBApp()->setIsStarted(true);
     // save user
     $group = new Group();
     $group->setName('groupName');
     $bbapp->getEntityManager()->persist($group);
     // valid user
     $this->user = new User();
     $this->user->addGroup($group);
     $this->user->setLogin('user123');
     $this->user->setEmail('*****@*****.**');
     $this->user->setPassword('password123');
     $this->user->setActivated(true);
     $bbapp->getEntityManager()->persist($this->user);
     // inactive user
     $user = new User();
     $user->addGroup($group);
     $user->setLogin('user123inactive');
     $user->setEmail('*****@*****.**');
     $user->setPassword('password123');
     $user->setActivated(false);
     $bbapp->getEntityManager()->persist($user);
     $bbapp->getEntityManager()->flush();
     // login user
     $created = date('Y-m-d H:i:s');
     $token = new BBUserToken();
     $token->setUser($this->user);
     $token->setCreated($created);
     $token->setNonce(md5(uniqid('', true)));
     $token->setDigest(md5($token->getNonce() . $created . md5($this->user->getPassword())));
     $this->getSecurityContext()->setToken($token);
     // set up permissions
     $aclManager = $this->getBBApp()->getContainer()->get('security.acl_manager');
     $aclManager->insertOrUpdateClassAce(new ObjectIdentity('all', get_class($this->user)), UserSecurityIdentity::fromAccount($this->user), MaskBuilder::MASK_IDDQD);
 }
예제 #4
0
 /**
  * Create.
  *
  * @Rest\RequestParam(name = "name", requirements = {
  *  @Assert\NotBlank(message="Name is required"),
  *  @Assert\Length(max=50, minMessage="Maximum length of name is 50 characters")
  * })
  * @Rest\Security("is_fully_authenticated() & has_role('ROLE_API_USER') & is_granted('CREATE', 'BackBee\\Security\\Group')")
  */
 public function postAction(Request $request)
 {
     $group = new Group();
     $site = $this->getSite($request);
     if ($this->isDuplicated($request->request->get('name'), $site)) {
         return new JsonResponse(['errors' => ['name' => 'Group already exists.']], 400);
     }
     $group->setName($request->request->get('name'));
     $group->setSite($site);
     $group = $this->deserializeEntity($request->request->all(), $group);
     $this->getEntityManager()->persist($group);
     $this->getEntityManager()->flush();
     return new Response($this->formatItem($group), 200, ['Content-Type' => 'application/json']);
 }
예제 #5
0
 /**
  * Creates a user for the specified group, and authenticates a BBUserToken.
  *
  * @param string $groupId
  *
  * @return \BackBee\Security\Token\BBUserToken
  */
 protected function createAuthUser($groupId, $roles = array('ROLE_API_USER'))
 {
     $token = new BBUserToken($roles);
     $user = new User();
     $user->setEmail('*****@*****.**')->setLogin('admin')->setPassword('pass')->setApiKeyPrivate(uniqid("PRIVATE", true))->setApiKeyPublic(uniqid("PUBLIC", true))->setApiKeyEnabled(true);
     $group = $this->getBBApp()->getEntityManager()->getRepository('BackBee\\Security\\Group')->findOneBy(array('_name' => $groupId));
     if (!$group) {
         $group = new Group();
         $group->setName($groupId);
         $this->getBBApp()->getEntityManager()->persist($group);
         $this->getBBApp()->getEntityManager()->flush($group);
     }
     $user->addGroup($group);
     $token->setAuthenticated(true);
     $token->setUser($user)->setCreated(new \DateTime())->setLifetime(300);
     $this->getSecurityContext()->setToken($token);
     return $user;
 }