LoginSignup
2
2

More than 5 years have passed since last update.

CS-Cart: ユーザ名でログインできるようにする

Last updated at Posted at 2015-12-16

CS-Cartではユーザ名とパスワードでログインすることができたようだが、4.3.1からはメールアドレスのみで認証するようになったようだ。一応、usersテーブルにはuser_loginカラムというそれらしいものがあるが、認証には使われていない。

Unfortunately, the usernames are not supported since 4.3.1
Login With Email/username - General Questions - CS-Cart Community Forums

ユーザ名とパスワードしかユーザマスタに持ってない古いシステムからCS-Cartに乗り換える場合、これが意外と障壁になる。

CS-Cartはどこで認証しているか?

app/functions/fn.users.phpのfn_auth_routines関数が認証の処理だが、残念ながらPHPフックはない。したがって、直接コアのコードを修正する外ない。

修正する箇所

まず、fn_auth_routines関数の下記の部分を見つける。

    $user_data = db_get_row("SELECT * FROM ?:users WHERE $field = ?s" . $condition, $user_login);

その後ろに、下記のような行を追加する

if (empty($user_data)) {
    $user_data = db_get_row("SELECT * FROM ?:users WHERE user_login = ?s" . $condition, $user_login);
}

これだけだと、ログインフォームでメールアドレスの書式チェックが走ってログインできないので、テンプレートも変更する。下記部分のcm-emailを消すと、メールアドレスのバリデーションが無効になる。また、「Eメール」という表示を「ユーザー名」にしたいので、__("email")__("username")に置き換える。

design/backend/templates/views/auth/login_form.tpl
...
-   <label for="username" class="cm-trim cm-required cm-email">{__("email")}:</label>
+   <label for="username" class="cm-trim cm-required">{__("username")}:</label>
...
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2