LDAP 認証時の Moodle へのユーザー追加を禁止する

今回の案件では、外部のデータベースと連携して Moodle 以外のプログラムを使って Moodle へユーザーを追加するので、LDAP 認証通過時に勝手に新規ユーザーが追加されるのを抑制する必要がありました。

調べてみると、

lib/moodlelib.php 内の authenticate_user_login() 内で呼ばれている create_user_record() でごにょごにょすれば良い感じ。(ちなみに authenticate_use_login() は login/index.php で呼ばれます。)

本体へ手を加えるのはなるべく避けたかったのですが、そうも言っていられないので、以下のように修正しました。

function create_user_record($username, $password, $auth='manual') {
    global $CFG;

	// LDAP 認証の場合、ユーザー作成を許可しない
	if (!strcmp('ldap', $auth)) {
		return false;
	}

    //just in case check text case
    $username = trim(moodle_strtolower($username));

これで勝手にユーザーが追加されることはなくなりました。ついでに設定画面のメッセージ表示も変更しておきます。

lang/ja_utf8/auth.php

$string['auth_ldapdescription'] = 'この方法では外部のLDAPサーバに対して認証を提供します。Moodleは新しいユーザをデータベースに作成しません。このモジュールはユーザ属性をLDAPから取得して、Moodleのフィールドに入力します。認証後のログインではユーザ名およびパスワードのみ確認されます。';

lang/ja_utf8/auth_ldap.php にも同様の記述があるのですが、どこで使われているのやら…。