この記事は約6分0秒で読めます。

みなさん。こんにちは、eccuberの中村です。

朝晩も冷え込んできて、徐々に秋から冬になってきていると感じております。
くれぐれも体調管理にはお気を付けください。

突然ですが、皆さんは管理画面のパスワードを忘れてしまい、焦った経験はございますでしょうか。

今回は、EC-CUBE4系において、管理画面のパスワードを忘れてしまった時の対処方法をご説明させていただきたいと思います。
ECCUBEの一部ソースを編集いたしますが、分かりやすいように画像も合わせて説明いたしますので、
「自分は、開発者じゃない」と思った方も安心してできるかと思います。

準備

  • データベースへのアクセス情報
  • クライアントツール(winscp,teratermなど)

編集対象ファイル

  • /app/config/eccube/packages/eccube.yaml
  • /src/Eccube/Form/Type/Admin/ChangePasswordType.php

手順

早速、手順を確認しましょう

1.eccube_auth_type を「PLAIN」に変更

※/var/cache/prod配下のキャッシュをすべて削除する必要がある場合がございます。
winscpなどを使用して、対象となる/app/config/eccube/packages/の 「eccube.yaml」を編集いたします。
eccube.yaml の26行目付近に記載されている
eccube_auth_type: HMAC を
HMAC→PLAIN
に変更して保存してください。

実際のコードは、下記となります。(対象行の前後を記載いたします)

    # EC-CUBE parameter
    eccube_database_url: '%env(DATABASE_URL)%'
    eccube_mailer_url: '%env(MAILER_URL)%'
    eccube_admin_route: '%env(ECCUBE_ADMIN_ROUTE)%'
    eccube_user_data_route: '%env(ECCUBE_USER_DATA_ROUTE)%'
    eccube_admin_allow_hosts: '%env(json:ECCUBE_ADMIN_ALLOW_HOSTS)%'
    eccube_force_ssl: '%env(bool:ECCUBE_FORCE_SSL)%'
    eccube.theme: '%env(ECCUBE_TEMPLATE_CODE)%'
    eccube_theme_code: '%eccube.theme%'
    eccube_auth_magic: '%env(ECCUBE_AUTH_MAGIC)%'
    eccube_auth_type: HMAC → PLAINに変更
    eccube_password_hash_algos: SHA256
    eccube_theme_app_dir: '%kernel.project_dir%/app/template'
    eccube_theme_src_dir: '%kernel.project_dir%/src/Eccube/Resource/template'
    eccube_theme_user_data_dir: '%eccube_theme_app_dir%/user_data'

2.login_idとpasswordをコピー

データベースにアクセスしてください。アクセスができましたら、
テーブル:dtb_member
から、対象となるメンバーの「login_id」と「password」をコピーしてください。
※ 次の手順でログインに使用いたします。

ここでは、
login_idが「ec4demo」
passwordが「3a4e64……….」※暗号化された状態の文字列
となります。

3.管理画面のログインにてlogin_idと暗号化されたpasswordでログイン

手順2でコピーしたlogin_idとpasswordを入力し、「ログイン」ボタンを押してください。

管理画面へログインができたと思われます。

※このまま、ログインのままにしてください。

4.手順1の eccube_auth_type をHMACに戻す

手順3でログインができたら、手順1で修正した
eccube.yaml のPLAINをもとの「HMAC」に戻してください。

5.ChangePasswordType.phpの52行目付近「 new UserPassword(), 」をコメントアウト

/src/Eccube/Form/Type/Admin/内の「ChangePasswordType.php」
の52行目付近「 new UserPassword(), 」をコメントアウトしてくだいさい。

実際のコードは、下記となります。(対象行の前後を記載いたします)

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('current_password', PasswordType::class, [
                'label' => 'changepassword.label.current_pass',
                'constraints' => [
                    new Assert\NotBlank(),
//                  new UserPassword(),
                ],
            ])
            ->add('change_password', RepeatedType::class, [
                'first_options' => [
                    'label' => 'changepassword.label.new_pass',
                ],
                'second_options' => [
                    'label' => 'changepassword.label.verify_pass',
                ],

6.キャッシュをクリアする

管理画面>コンテンツ管理>キャッシュ管理よりキャッシュ削除をします。

※キャッシュを削除しないと、「PLAIN」と記載された状態(手順4の変更前)で読み込まれる場合があり、パスワードは変更できますが、入力したパスワードがそのままデータベースに登録されてしまうため、ご注意ください。
これは、手順4でHMACに戻して頂きましたが、キャッシュには「PLAIN」が記載された状態でキャッシュされており、ECCUBE4の構成上、キャッシュを読み込むことがあるためです。

7.管理画面よりパスワードを変更する。

管理画面右上〇〇様を押すと「パスワード変更」が出てくるので、そこから
・「現在のパスワード」→手順2でコピーしたパスワードを使用
・「新しいパスワード」→任意のパスワード
を入力してください。

8.手順5のコメントアウトを外す

手順5で追記したコメントアウトを外す

9.確認

ログアウトして、新しく登録したパスワードでログインしてください。
ログインが可能になっているかと思います。
また、データベースのdtb_memberを確認していただき、手順2でコピーした文字列とは異なる文字列(新規に登録したパスワードではなく、英数字が羅列している暗号化された文字列)で、登録されておりましたら、対応は完了です

以上となります。お疲れ様でした

▼関連:EC-CUBEの標準機能について
https://ec-cuber.jp/eccube4/

弊社では、ECサイトの構築から保守・コンサルティングなど幅広く、対応しております。下記からお気軽にお問合せください。

EC-CUBEのことなら、弊社に何でもご相談・お任せください!
▼問合せフォームから相談してみる。
https://ec-cuber.jp/contact-us/
▼電話で相談してみる。
03-6386-3652