private function insert() { $this->resetNatTimer(); $config_file = $this->config_path . '/database.yml'; $database = Yaml::parse($config_file); $config['database'] = $database['database']; $config_file = $this->config_path . '/config.yml'; $baseConfig = Yaml::parse($config_file); $config['config'] = $baseConfig; $this->PDO->beginTransaction(); try { $config = array('auth_type' => '', 'auth_magic' => $config['config']['auth_magic'], 'password_hash_algos' => 'sha256'); $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($config); $salt = \Eccube\Util\Str::random(); $encodedPassword = $passwordEncoder->encodePassword($this->session_data['login_pass'], $salt); $sth = $this->PDO->prepare('INSERT INTO dtb_base_info ( id, shop_name, email01, email02, email03, email04, update_date, option_product_tax_rule ) VALUES ( 1, :shop_name, :admin_mail, :admin_mail, :admin_mail, :admin_mail, current_timestamp, 0);'); $sth->execute(array(':shop_name' => $this->session_data['shop_name'], ':admin_mail' => $this->session_data['email'])); $sth = $this->PDO->prepare("INSERT INTO dtb_member (member_id, login_id, password, salt, work, del_flg, authority, creator_id, rank, update_date, create_date,name,department) VALUES (2, :login_id, :admin_pass , :salt , '1', '0', '0', '1', '1', current_timestamp, current_timestamp,'管理者','EC-CUBE SHOP');"); $sth->execute(array(':login_id' => $this->session_data['login_id'], ':admin_pass' => $encodedPassword, ':salt' => $salt)); $this->PDO->commit(); } catch (\Exception $e) { $this->PDO->rollback(); throw $e; } return $this; }
private function insert() { $this->resetNatTimer(); $config_file = $this->config_path . '/database.yml'; $database = Yaml::parse($config_file); $config['database'] = $database['database']; $config_file = $this->config_path . '/config.yml'; $baseConfig = Yaml::parse($config_file); $config['config'] = $baseConfig; if ($config['database']['driver'] == 'pdo_pgsql') { $sqlFile = __DIR__ . '/../../Resource/sql/insert_data_pgsql.sql'; } elseif ($config['database']['driver'] == 'pdo_mysql') { $sqlFile = __DIR__ . '/../../Resource/sql/insert_data_mysql.sql'; } else { die('database type invalid.'); } $fp = fopen($sqlFile, 'r'); $sql = fread($fp, filesize($sqlFile)); fclose($fp); $sqls = explode(';', $sql); $this->PDO->beginTransaction(); foreach ($sqls as $sql) { $this->PDO->query(trim($sql)); } $config = array('auth_type' => '', 'auth_magic' => $config['config']['auth_magic'], 'password_hash_algos' => 'sha256'); $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($config); $salt = \Eccube\Util\Str::random(); $encodedPassword = $passwordEncoder->encodePassword($this->session_data['login_pass'], $salt); $sth = $this->PDO->prepare("INSERT INTO dtb_base_info (\n id,\n shop_name,\n email01,\n email02,\n email03,\n email04,\n update_date,\n option_product_tax_rule\n ) VALUES (\n 1,\n :shop_name,\n :admin_mail,\n :admin_mail,\n :admin_mail,\n :admin_mail,\n current_timestamp,\n 0);"); $sth->execute(array(':shop_name' => $this->session_data['shop_name'], ':admin_mail' => $this->session_data['email'])); $sth = $this->PDO->prepare("INSERT INTO dtb_member (member_id, login_id, password, salt, work, del_flg, authority, creator_id, rank, update_date, create_date,name,department) VALUES (2, :login_id, :admin_pass , :salt , '1', '0', '0', '1', '1', current_timestamp, current_timestamp,'管理者','EC-CUBE SHOP');"); $sth->execute(array(':login_id' => $this->session_data['login_id'], ':admin_pass' => $encodedPassword, ':salt' => $salt)); $this->PDO->commit(); return $this; }
function initializeDatabase(\Eccube\Application $app) { // Get an instance of your entity manager $entityManager = $app['orm.em']; $pdo = $entityManager->getConnection()->getWrappedConnection(); // Clear Doctrine to be safe $entityManager->getConnection()->getConfiguration()->setSQLLogger(null); $entityManager->clear(); gc_collect_cycles(); // Schema Tool to process our entities $tool = new \Doctrine\ORM\Tools\SchemaTool($entityManager); $classes = $entityManager->getMetaDataFactory()->getAllMetaData(); // Drop all classes and re-build them for each test case out('Dropping database schema...', 'info'); $tool->dropSchema($classes); out('Creating database schema...', 'info'); $tool->createSchema($classes); out('Database schema created successfully!', 'success'); $config = new \Doctrine\DBAL\Migrations\Configuration\Configuration($app['db']); $config->setMigrationsNamespace('DoctrineMigrations'); $migrationDir = __DIR__ . '/src/Eccube/Resource/doctrine/migration'; $config->setMigrationsDirectory($migrationDir); $config->registerMigrationsFromDirectory($migrationDir); $migration = new \Doctrine\DBAL\Migrations\Migration($config); $migration->migrate(); out('Database migration successfully!', 'success'); $login_id = getenv('ADMIN_USER'); $login_password = getenv('ADMIN_PASS'); $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($app['config']); $salt = \Eccube\Util\Str::random(32); $encodedPassword = $passwordEncoder->encodePassword($login_password, $salt); out('Creating admin accounts...', 'info'); $sql = "INSERT INTO dtb_member (member_id, login_id, password, salt, work, del_flg, authority, creator_id, rank, update_date, create_date,name,department) VALUES (2, :login_id, :admin_pass , :salt , '1', '0', '0', '1', '1', current_timestamp, current_timestamp,'管理者', 'EC-CUBE SHOP');"; $stmt = $pdo->prepare($sql); $stmt->execute(array(':login_id' => $login_id, ':admin_pass' => $encodedPassword, ':salt' => $salt)); $stmt->closeCursor(); $shop_name = getenv('SHOP_NAME'); $admin_mail = getenv('ADMIN_MAIL'); $sql = "INSERT INTO dtb_base_info (id, shop_name, email01, email02, email03, email04, update_date, option_product_tax_rule) VALUES (1, :shop_name, :admin_mail1, :admin_mail2, :admin_mail3, :admin_mail4, current_timestamp, 0)"; $stmt = $pdo->prepare($sql); $stmt->execute(array(':shop_name' => $shop_name, ':admin_mail1' => $admin_mail, ':admin_mail2' => $admin_mail, ':admin_mail3' => $admin_mail, ':admin_mail4' => $admin_mail)); $stmt->closeCursor(); }
private function update() { $this->resetNatTimer(); $config_file = $this->config_path . '/database.yml'; $database = Yaml::parse(file_get_contents($config_file)); $config['database'] = $database['database']; $config_file = $this->config_path . '/config.yml'; $baseConfig = Yaml::parse(file_get_contents($config_file)); $config['config'] = $baseConfig; $this->PDO->beginTransaction(); try { $config = array('auth_type' => '', 'auth_magic' => $config['config']['auth_magic'], 'password_hash_algos' => 'sha256'); $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($config); $salt = \Eccube\Util\Str::random(32); $stmt = $this->PDO->prepare("SELECT member_id FROM dtb_member WHERE login_id = :login_id;"); $stmt->execute(array(':login_id' => $this->session_data['login_id'])); $rs = $stmt->fetch(); $encodedPassword = $passwordEncoder->encodePassword($this->session_data['login_pass'], $salt); if ($rs) { // 同一の管理者IDであればパスワードのみ更新 $sth = $this->PDO->prepare("UPDATE dtb_member set password = :admin_pass, salt = :salt, update_date = current_timestamp WHERE login_id = :login_id;"); $sth->execute(array(':admin_pass' => $encodedPassword, ':salt' => $salt, ':login_id' => $this->session_data['login_id'])); } else { // 新しい管理者IDが入力されたらinsert $sth = $this->PDO->prepare("INSERT INTO dtb_member (login_id, password, salt, work, del_flg, authority, creator_id, rank, update_date, create_date,name,department) VALUES (:login_id, :admin_pass , :salt , '1', '0', '0', '1', '1', current_timestamp, current_timestamp,'管理者','EC-CUBE SHOP');"); $sth->execute(array(':login_id' => $this->session_data['login_id'], ':admin_pass' => $encodedPassword, ':salt' => $salt)); } $sth = $this->PDO->prepare('UPDATE dtb_base_info set shop_name = :shop_name, email01 = :admin_mail, email02 = :admin_mail, email03 = :admin_mail, email04 = :admin_mail, update_date = current_timestamp WHERE id = 1;'); $sth->execute(array(':shop_name' => $this->session_data['shop_name'], ':admin_mail' => $this->session_data['email'])); $this->PDO->commit(); } catch (\Exception $e) { $this->PDO->rollback(); throw $e; } return $this; }