本地插件权限问题不适用于课程管理器 - Moodle
Local Plugin permission issue not apply on course manager specifically - Moodle
我是 Moodle 的新手,我的任务是创建具有课程管理员角色的本地插件。在我的系统中,我在特定课程中有大量用户,他们是不同角色的类别。其中一些与学生有联系,其余的是经理。对于我的情况,我收到了客户的请求,要求制作一个本地插件,该插件针对学生记录生成多个报告。我已经成功制作了插件,但条件是这个插件只能访问那些已经作为经理注册课程的人。我正在尝试使用以下代码,我在下面与您分享但没有成功。现在只有管理员可以访问本地插件,其余的都是从 moodle 状态收到错误消息。
["Sorry, but you do not currently have permissions to do that Project view "]
不知道如何解决。
请指教
local/project/db/access.php
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'local/project:view' => array(
'riskbitmask' => RISK_PERSONAL,
'captype' => 'read',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'manager' => CAP_ALLOW
),
'local/project:manage' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'manager' => CAP_ALLOW
)
)
)
);
local/project/header.php
require(dirname(__FILE__).'/../../config.php');
global $DB;
//Get the system context
$url = new moodle_url('/local/project/index.php');
require_login();
require_capability('local/project:view', context_system::instance());
没有名为 'Course manager' 的标准 Moodle 角色。
有一个角色叫 'Manager' ('manager'),还有一个叫 'Course creator' ('coursecreator')。
如果您启用了 debugging,如果代码有任何错误(例如,如果您没有 运行 install/upgrade 进程来创建功能,或者如果您在创建功能后没有增加插件版本号)。
我已经成功实现了 moodle
许可的目标。我在课程上下文中使用了 has_capability
方法,并使用 require_capability
检查真实性。以下程序仅适用于 admin
和 manager
其他人只有在他们从站点管理获得完全权限后才能访问。
local/project/db/access.php
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'local/project:view' => array(
'riskbitmask' => RISK_SPAM,
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'archetypes' => array(
'manager' => CAP_ALLOW,
),
)
);
local/project/header.php
require(dirname(__FILE__).'/../../config.php');
require_login();
//Get the system context
$context = context_course::instance($course_id);
if (!has_capability('local/project:view', $context)) {
require_capability('local/project:view', $context);
}
我是 Moodle 的新手,我的任务是创建具有课程管理员角色的本地插件。在我的系统中,我在特定课程中有大量用户,他们是不同角色的类别。其中一些与学生有联系,其余的是经理。对于我的情况,我收到了客户的请求,要求制作一个本地插件,该插件针对学生记录生成多个报告。我已经成功制作了插件,但条件是这个插件只能访问那些已经作为经理注册课程的人。我正在尝试使用以下代码,我在下面与您分享但没有成功。现在只有管理员可以访问本地插件,其余的都是从 moodle 状态收到错误消息。
["Sorry, but you do not currently have permissions to do that Project view "]
不知道如何解决。
请指教
local/project/db/access.php
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'local/project:view' => array(
'riskbitmask' => RISK_PERSONAL,
'captype' => 'read',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'manager' => CAP_ALLOW
),
'local/project:manage' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'archetypes' => array(
'manager' => CAP_ALLOW
)
)
)
);
local/project/header.php
require(dirname(__FILE__).'/../../config.php');
global $DB;
//Get the system context
$url = new moodle_url('/local/project/index.php');
require_login();
require_capability('local/project:view', context_system::instance());
没有名为 'Course manager' 的标准 Moodle 角色。
有一个角色叫 'Manager' ('manager'),还有一个叫 'Course creator' ('coursecreator')。
如果您启用了 debugging,如果代码有任何错误(例如,如果您没有 运行 install/upgrade 进程来创建功能,或者如果您在创建功能后没有增加插件版本号)。
我已经成功实现了 moodle
许可的目标。我在课程上下文中使用了 has_capability
方法,并使用 require_capability
检查真实性。以下程序仅适用于 admin
和 manager
其他人只有在他们从站点管理获得完全权限后才能访问。
local/project/db/access.php
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'local/project:view' => array(
'riskbitmask' => RISK_SPAM,
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'archetypes' => array(
'manager' => CAP_ALLOW,
),
)
);
local/project/header.php
require(dirname(__FILE__).'/../../config.php');
require_login();
//Get the system context
$context = context_course::instance($course_id);
if (!has_capability('local/project:view', $context)) {
require_capability('local/project:view', $context);
}