ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

Re: ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

- Mitsuhiro Yoshida の投稿
返信数: 5
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

下記のように一時的にプログラムを修正して原因を探られてはいかがでしょうか。

修正対象プログラム:
admin/tool/uploaduser/index.php

修正箇所:
924行目

[ 修正前 ]
                    } else {
                        $upt->track('enrolments', get_string('unknownrole', 'error', s($sysrolename)), 'error');
                        continue;
                    }

[ 修正後 ]
                    } else {
                        $upt->track('enrolments', get_string('unknownrole', 'error', s($sysrolename)), 'error');
                        echo __LINE__;
                        echo '<pre>';
                        print_r($sysrolecache);
                        echo '</pre>';
                        continue;
                    }

----------------------------

修正箇所:
987行目

[ 修正前 ]
                    } else {
                        $upt->track('enrolments', get_string('unknownrole', 'error', s($rolename)), 'error');
                        continue;
                    }


[ 修正後 ]
                        $upt->track('enrolments', get_string('unknownrole', 'error', s($rolename)), 'error');
                        echo __LINE__;
                        echo '<pre>';
                        print_r($rolecache);
                        echo '</pre>';
                        continue;

----------------------------

修正箇所:
1008行目

[ 修正前 ]
                    } else {
                        $upt->track('enrolments', get_string('unknownrole', 'error', s($rolename)), 'error');
                        continue;
                    }

[ 修正後 ]
                    } else {
                        $upt->track('enrolments', get_string('unknownrole', 'error', s($rolename)), 'error');
                        echo __LINE__;
                        echo '<pre>';
                        print_r($rolecache);
                        echo '</pre>';
                        continue;
                    }

Mitsuhiro Yoshida への返信

Re: ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

- 藤村 SC の投稿
Mitsuhiro Yoshidaさま 


 御礼が遅くなりまして、申し訳ございません。  

ロール名フィールドに「sysrole」は使っておりませんでしたので、

 ご教示いただきましたプログラムをエンジニアに見てもらいました。


結果、マネージャー権限の時は、コースのユーザコンテキスト?がとれていないようです。

(前回は気づかなかったのですが、プレビュー画面の「ロール」部分のプルダウンが空です。)

ロールのアサイン部分などに不備があるのではないか…とのことですが、

ケイパビリティなどを確認する限り、システムロールでも「ユーザにロールを割り当てる moodle/role:assign」あたりは、やはり「許可」になっていますし、コースでも「継承」になっています;

権限の設定不足による問題な気はするのですが…


何度も申し訳ございませんが、チェックすべき箇所にお心あたりがありましたら

お教えいただけますと幸いです。。

藤村 SC への返信

Re: ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

Moodle 3.1.9 (Build: 20171113) でユーザのアップロードを確認させて頂きましたが、「アップロードユーザプレビュー」画面に「ロール」セクションが見当たらないようです。

どのようにして「アップロードユーザプレビュー」画面に「ロール」セクションを表示されましたでしょうか?

添付 Upload users preview.png
Mitsuhiro Yoshida への返信

Re: ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

- 藤村 SC の投稿
Mitsuhiro Yoshidaさま


ご多用のところ、検証にご協力くださり誠にありがとうございます!


?!

当方の3.1.8の本番環境では、特に何の設定もせず、ロールセクションが表示されていると記憶しています…

(ちなみに管理者権限ですと、ここのプルダウンにはきちんと「学生(student)」などの選択肢が入ります; のちほどキャプチャ貼付します。)


開発環境が3.1.4だったはずなので、そちらも確認してみます。

藤村 SC への返信

Re: ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

下記2つのMoodleをクリーンインストールして確認させて頂きましたが、「ロール」セクションは表示されないようです。

  • Moodle 3.1.4 (Build: 20170109)
  • Moodle 3.1.8 (Build: 20170911)


過去のMoodle 3.1.xシリーズは下記より入手可能です。

[Index of /stable31]
https://download.moodle.org/stable31/

Mitsuhiro Yoshida への返信

Re: ユーザアップロード時に「不明なロール「 student 」です。」というエラー文が表示される

- 藤村 SC の投稿
Mitsuhiro Yoshidaさま


お世話になっております。

インストール&初期設定を担当した者にも確認しましたが、 やはりプレビュー画面に「ロール」セクションを表示させる為に、
特別な設定は行っていないとのことでした…;(開発環境のVer3.1.4でも表示されておりました。何故……)

開発環境のマネージャー権限でアップロードを試したところ、無事にコースに「student」として登録出来たので、
開発(3.1.4)と本番(3.1.8)で異なるところを追ってみました。

・アップロードに関するソースは変更なし
・ケイパビリティーやロールの設定も(ユーザ登録に関係しそうなところは)同じ
・本番でも、マネージャー権限→管理者権限に変更すると、アップロードできる

先日ご教示いただいたプログラム等により、原因がロール・アサイン関連にあることは確実だったので
アップロード時の判定から、
一点、思い当たるところとして
ユーザのデフォルトホームページ defaulthomepage が、遷移の変更により

開発では「ユーザプリファレンス」
本番では「サイト」

と変更になったことが原因ではないかと推察しました。

本番環境では /admin/roles/permissions.php?contextid=XXX にアクセスしたところ
「ベースロールのケイパビリティをオーバーライドできません。」と弾かれた為

無理矢理 /admin/tool/uproaduser/locallib.phpの
uu_allowed_roles() 及び uu_allowed_roles_cache() 内で、get_assignable_roles()する際に渡すcontextを
context_course::instance(SITEID)からcontext_systeminstance()へ変更したところ、
現設定でも、無事アップロード出来るようになりました。

まさかフロントページのロールが絡んでいるとは思わず、
判明までにだいぶ時間がかかりました。。 大変お騒がせいたしました!

評点平均: お役立ち度: ★★★★★★★ (1)