示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#3
0
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();
}
示例#4
0
 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;
 }