Я новичок в Moodle, и у меня есть задача создать локальный плагин с ролью менеджера курса. В моей системе у меня есть масса пользователей по определенному курсу, и они являются категориями в разных ролях. Некоторые из них связаны со студентами, а остальные являются менеджерами. В моем случае я получил запрос от клиента на создание локального плагина, который генерирует несколько отчетов по студенческим записям. Я успешно создал плагин, но условие состоит в том, что этот плагин может получить доступ только к тем, кто записался на курс в качестве менеджера. Я пытаюсь с помощью следующего кода, который я поделюсь с вами ниже, но безуспешно. прямо сейчас только администратор может получить доступ к локальному плагину, остальные сообщения об ошибках из состояния Moodle.
["Sorry, but you do not currently have permissions to do that Project view "]
Не знаю, как это будет решено.
Пожалуйста, порекомендуйте.
местный / проект / дб / 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
)
)
)
);
местный / проект / 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());
Не существует стандартной роли Moodle под названием «Менеджер курсов».
Существует роль, называемая «Менеджер» («менеджер»), а другая — «Создатель курса» («Coursecreator»).
Если у вас есть отладка Если включено, вы можете получить некоторые дополнительные предупреждающие сообщения, если с кодом что-то не так (например, если вы не запустили процесс установки / обновления для создания возможностей или если вы не увеличили номер версии плагина после создания возможностей).
Я успешно достиг цели против moodle
разрешение. я использовал has_capability
метод с контекстом курса и проверить подлинность с require_capability
, Следующая процедура работает только с admin
а также manager
другие не будут иметь доступа до тех пор, пока не получат полные права от администрации сайта.
местный / проект / дб / 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,
),
)
);
местный / проект / 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);
}