この記事は3分30秒で読めます。

はじめまして。

株式会社IDSの三瓶といいます。

自分もIDSに入社するまでは、ECサイトはフルスクラッチで製造していたため、EC-CUBEを少しぐらいしか触ったことがなく、触り始めてから色々と困ったことに出くわしました。

今回はそんな色々あった困りごとの中から『管理画面のパスワードを忘れた時』にどうすればいいかを書かせていただきます。

管理者パスワードは忘れやすい

実際に作られてるプログラマーの方というのはフロント画面も管理画面もよく触ると思います。

その場合、パスワードを忘れるなんて事はほとんどないんじゃないでしょうか。
ただ、私もそうなんですが管理側の人間となるとそこまで触ったりしないはず。

下手すればプロジェクトの中で一度も触った事ないなんて人もいたりするんじゃないでしょうか。

chromeなどにパスワードを登録しておけばOKなんじゃないかって意見もあるかもしれませんが、1度か2度も使わないようなパスワードを登録する人もなかなかいないですよね?

まあ、私がそうなんですが。。。

ましてやセキュリティ対策でPCに付箋でパスワードを書いたのを貼っておくなんてのも問題ですし。

という訳で、意外に管理者パスワードは忘れがちになるんです。

管理者パスワード忘れるとそんなに大変?

この管理者パスワード、なかなかやっかいなんですですよね。

他に人がいれば聞いてみるのも手なんですが忙しく開発をやっている人にわざわざパスワード変更をお願いするのも申し訳ないですし。

複合化すればいいんじゃないかと思っても、どこで暗号化してるかなんてEC-CUBEをそんなに触った事がない人にはハードルが高いんですよね。
結局どうすればいいんだと八方塞がりになってしまう事が大半だと思います。

じゃー、いっその事ソースを直接いじってしまってログインできるようにしちゃいましょうというのが今回の趣旨です。

対応方法

data/class/utilフォルダにSC_Utils.phpというファイルがあります。
その中にsfIsMatchHashPasswordというメソッドがあります。

public function sfIsMatchHashPassword($pass, $hashpass, $salt)
{
$res = false;
if ($hashpass != '') {
     if (AUTH_TYPE == 'PLAIN') {
         if ($pass === $hashpass) {
             $res = true;
            }
     } else {
         if (empty($salt)) {
             $hash = sha1($pass . ':' . AUTH_MAGIC);
         } else {
             $hash = SC_Utils_Ex::sfGetHashString($pass, $salt);
         }
         if ($hash === $hashpass) {
             $res = true;
         }
     }
    }
 
    return $res;
}

このメソッドの一番最後にある「return $res;」という部分を「return true;」と書き換えるだけです。
※ただし私が知っているのはEC-CUBE2系だけで3系以降が同じとは限りません。

本当にこれだけで管理画面にアクセスできるようになるんです。
上の変更は要するにパスワードなんて何が入力されてても合ってるよ!って返却しようという修正なんです。

さて、これで管理画面でユーザーIDと適当なパスワードを入力してログインボタンをクリックしましょう。

本当に管理画面にログインできます!
アクセスした後はメンバー管理にて自分のパスワードを変更してください。

最後に大事なのは、パスワードを変更した後に修正かけたメソッドを元に戻すのを忘れないように!
忘れてるとパスワードを設定している意味がなくなってしまいますので。。。

私のようにパスワードを忘れて困ってしまった方はぜひお試しください。

ECサイト構築について
まずはお気軽に何でもご相談ください。
▼問合せフォームから相談してみる。
https://ec-cuber.jp/contact-us/
▼メールで相談してみる。
  sales_ec@ids.co.jp
▼電話で直接相談してみる。
  03-6386-3652