「データインポートした管理者ログインできなくなった。。。」
EC-CUBEのあるある話ですね。
よくあるだけにお困りの方も多いのではないでしょうか。
EC-CUBE2系についてはコミュニティに投稿がありましたのでご参照ください。
一時的にログイン検証を無効化する
この状況になってしまうとphpmyadminでパスワード変更しても効果はありません。
(salt生成、hash化の手順を踏んでいるため)
FTP経由で該当ファイルを編集し、EC-CUBE3のログイン検証を一時的に無効化してしまいます。
(インストールディレクトリ)/src/Eccube/Security/Core/Encoder/PasswordEncoder.php
public function isPasswordValid($encoded, $raw, $salt)
{
if ($encoded == '') {
return false;
}
if ($this->config['auth_type'] == 'PLAIN') {
if ($raw === $encoded) {
return true;
}
} else {
// 旧バージョン(2.11未満)からの移行を考慮
if (empty($salt)) {
$hash = sha1($raw . ':' . $this->config['auth_magic']);
} else {
$hash = $this->encodePassword($raw, $salt);
}
if ($hash === $encoded) {
return true;
}
}
return true; //false; 強制的にOKとする
}
パスワードを管理画面から変更する
ログイン検証を無効化したことにより、どんなID、パスワードでもログインできてしまいます。
手早くメンバー管理画面から該当者のパスワードを更新します。
変更するのは一人で大丈夫です。
残りのメンバーはログイン可能になったメンバーアカウントで後で修正します。
誰でも管理画面にログインできる時間を可能な限り短くしましょう。
ログイン検証を元に戻す
このままでは危険なのでFTP経由で該当ファイルを元に戻しましょう。
(インストールディレクトリ)/src/Eccube/Security/Core/Encoder/PasswordEncoder.php
public function isPasswordValid($encoded, $raw, $salt)
{
if ($encoded == '') {
return false;
}
if ($this->config['auth_type'] == 'PLAIN') {
if ($raw === $encoded) {
return true;
}
} else {
// 旧バージョン(2.11未満)からの移行を考慮
if (empty($salt)) {
$hash = sha1($raw . ':' . $this->config['auth_magic']);
} else {
$hash = $this->encodePassword($raw, $salt);
}
if ($hash === $encoded) {
return true;
}
}
return false;
}
以上、EC-CUBE 3.0.15でデータベースのインポート後、ログインできなくなった場合の対処法でした。