ログイン時のユーザ名に使用する文字を制限できませんか

ログイン時のユーザ名に使用する文字を制限できませんか

- Katsunori Mizuno の投稿
返信数: 4

1.8.2+ で、ユーザ認証に ActiveDirectory (LDAP)を使用しているのですが、ActiveDirectory の変な仕様のため、混乱が起きています。

ActiveDirectory での認証は sAMAccountName を使うのですが、ログイン時のユーザ名に全角英字を入れてしまっても、半角英字と区別しないという。大変困った仕様になっています。

このため、e991000 というユーザ名で登録されている学生が、誤って991000のように全角英字を入れても認証が成功してしまうのです。認証が成功してしまうと、Moodleは、991000を新規ユーザとして登録してしまい、プロフィールの編集画面が表示され、学生は「????」な状態になってしまいます。

この問題は、ユーザ名に入力できる文字を半角英数字に制限できれば、取り合えず回避できそうなのですが、そのような変更を簡単に行うことは可能でしょうか?

Katsunori Mizuno への返信

Re: ログイン時のユーザ名に使用する文字を制限できませんか

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> この問題は、ユーザ名に入力できる文字を半角英数字に制限できれば、取り合えず回避できそうなのですが、そのような変更を簡単に行うことは可能でしょうか?

ログイン画面で全角英数字を入力した場合、すべて半角英数字に変換されてはいかがでしょうか。
よろしければ下記の修正をお試しください。ウインク

修正対象プログラム: /login/index.php
修正箇所: 108行目

[修正前]
} else if ($frm) { // Login WITH cookies

$frm->username = trim(moodle_strtolower($frm->username));

[修正後]
} else if ($frm) { // Login WITH cookies

$frm->username = mb_convert_kana($frm->username, 'a', 'utf-8');
$frm->username = trim(moodle_strtolower($frm->username));

Mitsuhiro Yoshida への返信

Re: ログイン時のユーザ名に使用する文字を制限できませんか

- Hiroyuki H の投稿

Moodle2.2.2+でも同様の問題が発生しますので、ActiveDirectoryをLDAPに使用する場合は
吉田さんの修正が必須だと思います。

新入生がログインする際など、全角でユーザ名を入力する学生は少なからずいるようですので
皆様お気をつけ下さい。