Вопрос разрешения локального плагина не распространяется на менеджера курса специально — Moodle

Я новичок в 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());

1

Решение

Не существует стандартной роли Moodle под названием «Менеджер курсов».

Существует роль, называемая «Менеджер» («менеджер»), а другая — «Создатель курса» («Coursecreator»).

Если у вас есть отладка Если включено, вы можете получить некоторые дополнительные предупреждающие сообщения, если с кодом что-то не так (например, если вы не запустили процесс установки / обновления для создания возможностей или если вы не увеличили номер версии плагина после создания возможностей).

1

Другие решения

Я успешно достиг цели против 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);
}
1

По вопросам рекламы [email protected]