Moodle设置权限无效

时间:2016-08-30 08:47:17

标签: moodle moodle-api

我在Moodle 3.0.5上配置了REST webservice以使用函数core_course_get_courses,它应该返回一个包含所有可用课程基本信息的响应。

这是我一直在使用的网址:

https://example.com/webservice/rest/server.php?wstoken=713898e3fcaf9ead2218eb7565993230&wsfunction=core_course_get_courses&moodlewsrestformat=json

而且,这就是我得到的:

{
  "exception": "required_capability_exception",
  "errorcode": "nopermissions",
  "message": "Sorry, but you do not currently have permissions to do that (View courses without participation)"
}

有问题的许可从一开始就设定了,即:

moodle/course:view

Role permissions setting page

它没有任何效果。我甚至允许一切,几百个权限只是为了看它是否会起作用,但仍然无效。

我使用了另一个具有相同服务的功能,它确实有效!:

core_enrol_get_enrolled_users

另一个重要的事实是core_course_get_courses函数适用于本地开发机器,并且全新安装了Moodle。生产环境安装了50个额外的插件。 调试“开发人员的额外Moodle调试消息”已启用,但没有显示错误。

原因可能是什么?

P.S。开发。机器是Ubuntu 14.04

2 个答案:

答案 0 :(得分:0)

拥有令牌的用户是否可以访问该功能?

通过网站管理员找到具有令牌的用户 - >插件 - >网络服务 - >管理令牌

或直接发送到/admin/settings.php?section=webservicetokens

然后通过网站管理员检查用户功能 - >用户 - >权限 - >检查系统权限

或直接发送到/admin/roles/check.php?contextid=1

如果看起来不错,请检查用户是否在该课程的其他用户列表中 - https://docs.moodle.org/31/en/Other_users

转到课程,然后转到课程管理员 - >用户 - >其他用户

或直接发送到/enrol/otherusers.php?id=#(#= courseid)

用户是否在该列表中?

答案 1 :(得分:-1)

请检查此功能所需的功能,然后转到 site Adminitration->users->permission->define

moodle/admin/roles/manage.php 然后角色显示角色列表

moodle/admin/roles/define.php?action=edit&roleid=9

enter image description here

允许功能