script pour determiner le role d'un utilisateur

script pour determiner le role d'un utilisateur

par alain roussel,
Nombre de réponses : 4

bonjour

pouvez vous m'aider, je demarre dans le developpement d'une barre de  menu autoconfigurable en fonction du role de l'utilisateur.

Il me faut donc une fois l'utilisateur logué déterminer son role 'admin, enseignant, etudiant, ...) je n'arrive pas à lire son roleid. la chaine retournée est toujours vide.

pouvez vous me dire comment récupérer cette info à l'aide d'un sript php, java, ...

afin que je puisse lancer une selection de menu en fonction du resultat.

auriez vous un petit exemple ?

merci d'avance pour votre aide.

Alain Roussel

Moyenne des évaluations  -
En réponse à alain roussel

Re: script pour determiner le role d'un utilisateur

par Patrick Pollet,
Bonjour,

Depuis Moodle 1.7 la situation n'est pas aussi simple qu'avant. Chaque utilisateur peut avoir un role différent selon le contexte (site, cours ou même activité). De plus les dérogations aux rôles viennent encore compliquer la situation, par exemple un étudiant d'un cours peut avoir le rôle enseignant juste pour un forum de ce cours ...


Tu peux utiliser les rôles "legacy" pour avoir une petite idée, mais ca reste très grossier et ne prendra pas en compte les dérogations, ni les rôles personnalisés qui auraient pu être ajoutés au niveau du site ...


En admettant que tu connais $userid et $courseid tu peux essayer faire :


has_capability('moodle/legacy:admin', get_context_instance(CONTEXT_SYSTEM, SITEID), $userid, false);

Ca te dira si il est admin au niveau du site, donc normalement partout ...

has_capability('moodle/legacy:coursecreator', get_context_instance(CONTEXT_SYSTEM, SITEID), $userid, false);

Ca te dira s'il est créateur de cours au niveau du site...attention dans de nombreux sites il y a des créateurs aux niveaux des catégories et pas au niveau site ... donc il te faudra d'abord chercher la catégorie du cours, son contexte et refaire le test ...


has_capability('moodle/legacy:teacher', get_context_instance(CONTEXT_COURSE, $courseid), $userid, false) || has_capability('moodle/legacy:editingteacher', get_context_instance(CONTEXT_COURSE, $courseid), $userid, false);

Ca te dira si il est "prof" du cours. Un meilleur test serait la capacité "moodle/course:update" pour un vrai "prof éditeur"

Enfin, si ces tests ont échoués, il est peut être étudiant, si il a la capacité "moodle/course:view" et qu'il n'est pas l'invité...

Bref ces tests émuleront à peu près le comportement de Moodle 1.6 sans rôles... ils sont aussi disponibles avec les fonctions isadmin() et isteacher($courseid), MAIS ces fonctions ont été dépreciées ...

Tout ca sans oublier que la page d'accueil est un cours très particulier avec ses propres rôles ...


Voila.




En réponse à Patrick Pollet

Re: script pour determiner le role d'un utilisateur

par alain roussel,

merci pour ces informations

je viens de les essayer et cela marche bien au niveau site.

par contre

le test  has_capability('moodle/legacy:teacher', get_context_instance(CONTEXT_COURSE, $courseid), $userid, false) || has_capability('moodle/legacy:editingteacher', get_context_instance(CONTEXT_COURSE, $courseid), $userid, false);

ne fonctionne pas. cela viens surement du fait que je ne donne pas le bon contexte.
je ne sais pas comment on doit faire pour le recuperer.

je connais le userid et le courseid

pouvez vous m'eclairer sur ce point ?

merci

A. Roussel

En réponse à alain roussel

Re: script pour determiner le role d'un utilisateur

par alain roussel,

voila j'ai trouvé mon problème. c'était le coiurseid qui ne passait pas bien. tout marche bien maintenant

encore merci

A. Roussel

En réponse à alain roussel

Re: script pour determiner le role d'un utilisateur

par Patrick Pollet,
Pourrais-tu publier ici ton "bout de code" qui va bien. Ca pourrais servir à d'autres.
Merci