try { // Create security Acl tables $tablesMapping = ['class_table_name' => 'acl_classes', 'entry_table_name' => 'acl_entries', 'oid_table_name' => 'acl_object_identities', 'oid_ancestors_table_name' => 'acl_object_identity_ancestors', 'sid_table_name' => 'acl_security_identities']; foreach ($tablesMapping as $tableName) { $connection->executeQuery(sprintf('DROP TABLE IF EXISTS %s', $tableName)); } $schema = new \Symfony\Component\Security\Acl\Dbal\Schema($tablesMapping); $platform = $connection->getDatabasePlatform(); foreach ($schema->toSql($platform) as $query) { $connection->executeQuery($query); } /** * Creation of Admin user */ $encoderFactory = $application->getContainer()->get('security.context')->getEncoderFactory(); $adminUser = new \BackBee\Security\User($_POST['username'], $_POST['user_password'], 'SuperAdmin', 'SuperAdmin'); $adminUser->setApiKeyEnabled(true)->setActivated(true); $encoder = $encoderFactory->getEncoder($adminUser); $adminUser->setPassword($encoder->encodePassword($_POST['user_password'], ''))->setEmail($_POST['user_email'])->generateRandomApiKey(); $entityManager->persist($adminUser); $entityManager->flush($adminUser); $security = \Symfony\Component\Yaml\Yaml::parse(dirname(__DIR__) . '/repository/Config/security.yml.dist'); $security['sudoers'] = [$adminUser->getLogin() => $adminUser->getId()]; file_put_contents(dirname(__DIR__) . '/repository/Config/security.yml', $yaml->dump($security)); chmod(dirname(__DIR__) . '/repository/Config/security.yml', 0755); $security = \Symfony\Component\Yaml\Yaml::parse(dirname(__DIR__) . '/repository/Config/security.yml'); } catch (\Exception $e) { // to be catched by Debug component } $step = 4; }
/** * Create new superadmin user * * @param string $login User name * @param string $password User password * @param string $email User email * * @return \BackBee\Security\User The user object */ private function createUser($login, $password, $email) { $encoderFactory = $this->bbapp->getContainer()->get('security.context')->getEncoderFactory(); $adminUser = new \BackBee\Security\User($login, $password, 'SuperAdmin', 'SuperAdmin'); $adminUser->setApiKeyEnabled(true)->setActivated(true); $encoder = $encoderFactory->getEncoder($adminUser); $adminUser->setPassword($encoder->encodePassword($password, ''))->setEmail($email)->generateRandomApiKey(); $this->entyMgr->persist($adminUser); $this->entyMgr->flush($adminUser); return $adminUser; }