EC-CUBE2.4で管理画面にログインできないバグ

EC-CUBE2.4が正式公開されました。
RCのときは手を出せなかったのですが、正式公開されたということでテスト用サーバにインストール。
インストール自体は素直に済んだんですが、インストール時に設定したパスワードで管理画面にログインできん…orz。(RCのときにも似たようなバグがあったような…)
このままではどうしようもないので調べてみました。

・とりあえずもう一回インストール、パスワード設定部分を見てみる

設定画面

設定画面

パスワード部分は4~15文字、設定したパスワードは11文字なので問題なし。

・テンプレートと文字数チェック部分を見てみる
html/install/templates/step1.tpl と html/install/index.php を見てみます。
表示、文字列チェックともに ID_MIN_LEN と ID_MAX_LEN という定数を使っていました。
data/mtb_constans_init.php にも「管理画面用:ID・パスワードの文字数制限」とあるので実は定数違ってましたなんてことは無いはず(多分)。

・管理画面へのログイン部分を見てみる
次に管理画面へのログインで使用しているクラス
data/class/pages/admin/LC_Page_Admin_Lohin.php を見てみます。
当然、入力文字列の長さチェック部で ID_MIN_LEN と ID_MAX_LEN を使ってるかと思いきや。
68行目付近の if の条件を見るとパスワードの長さはPASSWORD_LEN1 ~ PASSWORD_LEN2 って。
この2つの定数を確認してみると PASSWORD_LEN1 は4、PASSWORD_LEN2 は10でした。
今回設定したパスワードは11文字だったので、ログインしようとするとアウト。
設定時と使用時の長さチェックする定数が違うとか。

原因がわかったので修正です。
念のため LC_Page_Admin_Lohin.php に直接はやめて、
LC_Page_Admin_Login_Ex.php に processメソッドをオーバーライドして修正します。
68行目付近の if の条件を PASSWORD_LEN1 、PASSWORD_LEN2 ではなくID_MIN_LEN と ID_MAX_LEN を使うように修正します。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です