problème avec la fonction require_capability()

problème avec la fonction require_capability()

par Maxime Duthoit,
Nombre de réponses : 2

Bonjour,

Je m'essaye depuis peu au développement de modules pour Moodle et j'essuie déjà un échec.

admettons que le module s'appelle newmodule.

Sur la page view.php du module newmodule j'ai ajouté là où il faut : 

$context = get_context_instance(CONTEXT_MODULE, $cm->id);

require_capability('mod/newmodule:view', $context);

Sur la page db/access.php j'ai ajouté là où il faut :

'mod/newmodule:view' => array(

'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
'archetypes' => array(

'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher'=> CAP_ALLOW,
'coursecreator' => CAP_ALLOW,
'manager' => CAP_ALLOW,
'admin' => CAP_ALLOW

)

)

Lorsque j'accède au contenu du module (view.php donc) avec un compte administrateur ça fonctionne.

Lorsque j'y accède avec un le compte d'une personne définie en tant qu'enseignant dans le cours où ce module est implémenté, ça ne fonctionne pas. Message : "Désolé, vous n'avez actuellement pas les autorisations pour effectuer ceci (Voir le module)".

Ca ne fonctionne pas non plus lorsque le dit compte possède le même rôle mais cette fois définie au niveau système.

J'aimerai savoir ce qui ne va pas selon vous ? J'utilise la version 1.9.19 de Moodle - j'y suis contraint.

Merci à vous,

Maxime D.

Moyenne des évaluations  -
En réponse à Maxime Duthoit

Re: problème avec la fonction require_capability()

par Valery Fremaux,
Avatar Développeurs de plugins

tout changement de définition de capacité implique que ces changements soient répercutés dans les tables mdl_capabilitites et mdl_role_capabilities de Moodle.

Ceci nécessite à chaque fois une augmentation du numéro de version du module (même +1) pour que la fonction upgrade valide les changements. Et donc un passage par les notifications.

L'accès en administrateur fonctionne toujours, car la règle require_capability() est alors piégée par la super capacité moodle/site:doanything (capacité qui d'ailleurs à disparu de Moodle 2).

Valery.

En réponse à Valery Fremaux

Re: problème avec la fonction require_capability()

par Maxime Duthoit,

Bonjour et merci de m'avoir répondu.

J'ai changé le numéro de version à l'instant, j'ai visité la page des notifications et tout s'est bien passé a priori.

Avec l'utilisateur désigné comme enseignant du cours (que ce soit spécifiquement au cours ou dans les rôles systèmes), ça ne fonctionne toujours pas ?!

Je n'y comprends plus rien, pourtant, il me semble avoir partiellement réussi à un moment donné.

Maxime D.