スタッフブログ
仕事でXOOPS Cubeの改造をしていると、中には非常にレアな要望もでてきます。
今回ご紹介するのは、uname でのログイン禁止です。
unameは、XOOPS Cubeでユーザさんのハンドル名として扱われるカラムでログインするときも、このunameとパスワードのペアでログインするのがデフォルトです。
ただ日本では、ハンドル名に日本語を使いたかったり、社内ポータルとしてXOOPS Cubeを使うケースではunameに本名を記述して、ユーザ名として表示させたりしていて、ログインIDとして使うには不向きなことがあります。
そんなときにはemail+パスワードでログインできるpreload等を使うのが定番です。
通所だと、email+パスワードでも、uname+パスワードでもログインできてOKとなることがほとんどなのですが、先日出てきたご要望で「unameでのログインは禁止したい」という要望があり、対応しました。
改造する箇所はシンプルです。
html/modules/user/kernel/LegacypageFunctions.class.php のcheckLoginメソッドを改造します。
とあるので、この直後に
を追加するだけです。
このタイミングでreturnしてるのは、一応userモジュールの言語ファイルだけ読み込むためです。
(他のログイン関係のpreload等で使われる可能性が高いので)
レアな改造ですが、もし同じ事をしたくなったら参考にしてください。
今回ご紹介するのは、uname でのログイン禁止です。
unameは、XOOPS Cubeでユーザさんのハンドル名として扱われるカラムでログインするときも、このunameとパスワードのペアでログインするのがデフォルトです。
ただ日本では、ハンドル名に日本語を使いたかったり、社内ポータルとしてXOOPS Cubeを使うケースではunameに本名を記述して、ユーザ名として表示させたりしていて、ログインIDとして使うには不向きなことがあります。
そんなときにはemail+パスワードでログインできるpreload等を使うのが定番です。
通所だと、email+パスワードでも、uname+パスワードでもログインできてOKとなることがほとんどなのですが、先日出てきたご要望で「unameでのログインは禁止したい」という要望があり、対応しました。
改造する箇所はシンプルです。
html/modules/user/kernel/LegacypageFunctions.class.php のcheckLoginメソッドを改造します。
function checkLogin(&$xoopsUser)
{
if (is_object($xoopsUser)) {
return;
}
$root =& XCube_Root::getSingleton();
$root->mLanguageManager->loadModuleMessageCatalog('user');
return;
このタイミングでreturnしてるのは、一応userモジュールの言語ファイルだけ読み込むためです。
(他のログイン関係のpreload等で使われる可能性が高いので)
レアな改造ですが、もし同じ事をしたくなったら参考にしてください。