指定したコースのみゲストでのオートログインを可能とするには

指定したコースのみゲストでのオートログインを可能とするには

- Tatsuya Shirai の投稿
返信数: 1

 当方のサイトはオートログインを有効にしていません.つまりサイトにアクセスすると,まずログイン画面が表示され,学生はアカウントとパスワードを入力してログイン処理を行います(ゲストならばゲストでログインボタンを押してゲストログイン).

 サイト管理ブロックの「ユーザ」-「認証」-「認証の管理」で”ゲストログインボタンを表示”をYesにし,さらに「ユーザ」-「パーミッション」-「ユーザポリシー」の”ゲストのオートログイン”もYesに設定すると,ログイン画面を表示することなくゲストの入室を許可されたコース(およびフロントページ)にダイレクトにログインできます.ただしゲストアカウントです.

 これらの設定はサイト単位での設定です.ゲストさんウェルカムなコースの場合はいちいち「ゲストでログイン」ボタンをクリックしないでも通常のWebページと同じ感覚でアクセスして貰える反面,ゲスト入室可だが学生のロールも割り当てられているコースに学生が入室した場合は混乱が生じます.フォーラムに書き込もうとしても投稿できずに一瞬迷います.改めて画面右上の「ログイン」ボタンを押してログインし直す必要があります.

 この辺りの管理を行っているのはlib/moodlelib.phpのfunction require_login()関数です.具体的には,

/// If the user is not even logged in yet then make sure they are
    if (!isloggedin()) {
        //NOTE: $USER->site check was obsoleted by session test cookie,
        //      $USER->confirmed test is in login/index.php
        if ($setwantsurltome) {
            $SESSION->wantsurl = $FULLME;
        }
        if (!empty($_SERVER['HTTP_REFERER'])) {
            $SESSION->fromurl  = $_SERVER['HTTP_REFERER'];
        }
        if ($autologinguest and !empty($CFG->guestloginbutton) and !empty($CFG->autologinguests) and ($COURSE->id == SITEID or $COURSE->guest) ) {
            $loginguest = '?loginguest=true';
        } else {
            $loginguest = '';
        }

この赤い行の部分です.特定のコースでは青で示した条件をパスするように何らかの工夫を施すと,「ユーザ」-「パーミッション」-「ユーザポリシー」の”ゲストのオートログイン”がNoでも,特定のコースの時だけオートログインできそうです.仕組みは,未ログイン状態の場合はlogin/index.phpにこれから入室したいコースのコースIDを保持してリダイレクトされるのですが,オートログインが許されている場合はそのURLにパラメータとして?loginguest=trueを付けてリダイレクトします.すると一瞬でlogin/index.phpからcourse/view.phpへリダイレクトが行われるのでログイン画面が表示されない,というもののようです.

 次に公開するfs_moodle3.20.00では,fsconfig_option.phpという設定ファイルにゲストでオートログインを許したいコースを指定する設定を列挙することで,そのコースに対してのみゲストでのオートログインを可能とする機能を追加する予定です.

Tatsuya Shirai への返信

Re: 指定したコースのみゲストでのオートログインを可能とするには

- Tatsuya Shirai の投稿

 一応,技術的に可能であることを確認しました.ついでに少し仕様を追加しました.

(1)ゲストでオートログインが無効なサイト設定時:元の仕様

 指定されたコースだけはログイン画面が表示されずにオートログインできる.

(2)ゲストでオートログインが有効なサイト設定時:追加した仕様

 指定されたコースだけはログイン画面が表示される.

 一体,何をしたいのか言葉だけでは分かりにくいですね...今回,”基本的にアクセスしたら,まずログイン画面が表示される”という設定の本サイト,つまり(1)の状態です,の中に,通常のWebページのように認証なしで一発アクセス・表示をしたいコースを作る必要がありました.ログイン画面が表示されたとしても,「ゲストでログイン」をクリックするだけでOKなのですが,アクセスした途端にログイン画面が表示されると一般の方は怯みますよね.拒絶されている!と.そして何気なく「ゲストでログイン」をクリックしたらページが表示されたとしても,「あ,なんか勝手に見ることができちゃった.もしかしてセキュリティの網目を潜り抜けちゃった?」とドキドキする人もいるかも知れません.そういう心理的な葛藤なしにアクセスして欲しいパブリックなコースをMoodle上に作成したかった訳です.では,(2)のように,ゲストがログインしても良いコースに関してはオートログインできる設定の場合.学生は認証されればフォーラムなどに書き込めるけれども,ゲストは閲覧のみ,というコースも結構ありますよね.この場合,学生が不利益を被ることになります.自分がログインしているかしていないか,意外とうっかり忘れるものです.フォーラムを閲覧していて,あ,返信しようと思ったときに自分がログインしていない(=ゲスト)であることに気付く.そして画面右上(あるいは画面下)のログインボタンをクリックしてログイン処理を行うと...おや,さっきまで読んでいた投稿はどこ?となります.

 オートログインさせたいのか,させたくないのか.コース単位で設定できればこういうことを考える必要はありませんでした.現状,この選択がサイト単位であることに問題がありました.選択の自由をコースの教師(実際にはサイト管理者にお願いする必要がありますが)に与える機能というわけです.


fs_moodleにおける仕様は以下のURLをご覧下さい.
http://www.suzuka-ct.ac.jp/mech/moodle/mod/wiki/view.php?id=320&page=Shirai174

しかし,考えれば考えるほど,”ゲストのオートログイン”を各コースごとに設定できるように標準のMoodleが仕様を拡張してくれるだけで済む話ですね^^;


P.S. たった数日前のことなのにスッカリ忘れていました.ゲストでログオンするのにログイン画面が出るのは億劫と言っていたのは自分でしたね^^; でも正直,そのように感じました.
http://moodle.org/mod/forum/discuss.php?d=136543