2016-04-21 2 views
0

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

ответ

0

Я успешно достиг цели 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

Там нет стандартной Мудл роль называется «менеджер курса.

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

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

+0

У меня есть еще одно решение, но его заказ я проверил разрешение пользователя непосредственно с базой данных ее работал для меня, поскольку мне нужно, но проблема заключается в том, что этот подход не предоставляет мне функцию ошибки, которая отображается как сообщения об ошибках moodle. не могли бы вы посоветовать, как я могу отображать те же сообщения об ошибках, которые используют moodle. 'if (count ($ resposne) == 0) { \t echo 'Извините, но у вас нет прав для этого проекта'; \t exit(); } ' –

+0

Если вам необходимо вручную проверить разрешение в базе данных, то есть что-то не так с вашим определением возможностей или проверкой возможностей. require_capability() и has_capability() работали правильно для меня тысячи раз за годы, которые я разрабатывал для Moodle. – davosmith

+0

для моего случая, как я могу использовать возможности с require_capability() и has_capability() ... нет никакого аспекта решения moodle –

Смежные вопросы