Posted at
MoodleDay 10

なるほどわかった!Moodleの代替ログインURL

More than 1 year has passed since last update.

moodle.png


Moodleの代替ログインURLについて

Moodleのサイト管理の機能に、代替ログインURL という機能があり、本来のログイン画面とは違うWebページをログイン画面に設定できます。


設定方法

設定は、サイト管理>プラグイン>認証>認証管理 のページから行います。

20161203_161357#00.png

ここにURLを設定すると、このページからしかログインできなくなりますし、ログアウトすると、このページに遷移し、ログイン待ちとなります。

たとえば、以下のようなHTMLを作成して、これをログインページとすることができます。


index.html

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>test</title>
<meta charset="utf-8" />
</head>
<body>
<form name="login" action="https://moodle.myuniversity.com/login/index.php" method="POST">
username:<input type="text" name="username" value=""></input><br />
password:<input type="text" name="password" value=""></input><br />
<input type="submit" name="submit" value="login">
</form>
</body>
</html>

20161203_162056#00.png


何に使うの?

例えば、代替ログインページにjavascriptやphp等のスクリプトを噛ませて、


  • 入力値をチェックする

  • 特定のIPからしかログインできなくする(他にも方法があるけど)

  • 特定の時間しかログインできなくする

  • 特定のリファラから以外は別のページにリダイレクトさせる

といった設定を、標準のloginページを改造せずに実現できるようになります。


設定をミスったら

注意書きに書かれているように、ログインできなくなります。


間違ったURLを設定することで、あなたのサイトから締め出されることになりますので注意してください。


このときは慌てずに以下のようにしてください。

1.MoodleのサーバにSSHでログインする

2.Moodleのデータベースにログインし、データベースを選択する。

3.以下のSQLを実行する。

UPDATE mdl_config SET value = '' WHERE name like 'alternateloginurl';

4.データベースからログアウトする

5.CLIでキャッシュをクリアする

$ sudo php /path/to/moodle/admin/cli/purge_caches.php

これで通常のログイン画面が表示されるようになります。