gestion des rôles utilisateurs - Moodle 3.9

gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Nombre de réponses : 24

Bonjour,

ma question me semble vraiment une question de débutant, et je pensais trouver des réponses tout seul dans le doc, ou même naturellement dans l'interface admin de Moodle.

Je dois reprendre en main plusieurs plateforme Moodle 3.9 et je n'arrive pas à faire le point sur les rôles des utiisateurs :

- en particulier, quand je suis sur la page de profil d'un utilisateur, je n'ai pas de bouton 'Rôles de cet utilisateur'. D'après la doc, ce dervait être le cas.

- dans le menu utilisateurs/permissions/attribution des rôles systèmes , je constate qu'il y a 0 gestionnaire, et 1 utilisateur qui a le rôle de "créateur de cours" et "ingé pédago". Je ne vois pas si d'autres personnes sont admin de la plateforme.

Enfin, si je vais dans utilisateurs/comptes/liste de utilisateurs je peux filtrer par rôle système et je constate que c'est cohérent avec les chiffre précédents.

En revanche, si je filtre par "rôle dans le cours", j'ai :

- nb total d'utilisateur : 9556

- 4946 étudiants

- 50 gestionnaires

- 857 enseignants

- 899 enseignants non éditeurs

- 0 ingénieurs pédagogiques

En fait, je ne comprend pas ce que signifie "rôle dans le cours" ? Est-ce que cela signifie que les 50 gestionnaires ont des droits sur l'ensemble des cours ? Sur certains cours ?

Concrètement, un enseignant arrive semble t-il à créer des cours sur la plateforme et je ne comprend pas comment car il n'est pas dans la liste des gestionnaires.

Merci d'avance pour tout conseil


Moyenne des évaluations  -
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Laurent,

Il me semble (très) important que tu (re)lises la documentation sur les rôles et les permissions, ainsi que les différentes pages liées, afin de mieux comprendre le fonctionnement.

Effectivement, un utilisateur n'a pas un rôle spécifique sur la plateforme, mais il (peut) cumule(r) plusieurs rôles dans différents contextes, lui donnant ainsi des droits (ou pas) sur des capacités.

Séverin

En réponse à Séverin Terrier

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Bonjour Séverin,
merci je vais le faire. Je suis loin d'avoir consulter toute la doc de Moodle ayant des fonctions d'admin depuis quelques semaines seulement. Je me forme petit à petit.

Je pense avoir compris le souci : il est possible que le rôle gestionnaire ait été attribué à certaines personnes sur des "catégories" d'où la possibilité pour elles de créer des cours.
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonsoir,

Sur la page "Actions par lots sur les utilisateurs", si on filtre par "Rôle dans le cours" sans sélectionner une catégorie et sans préciser un cours (par son nom abrégé) dans une catégorie, on obtient la liste des utilisateurs qui ont ce rôle dans au moins un des cours de la plateforme.

Christian

Moyenne des évaluations Utile (1)
En réponse à Christian Bocquet

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Merci, en effet, j'obtiens bien la liste des 50 personnes ayant des droits de gestionnaires sur tout ou partie de la plateforme. En revanche, je n'arrive pas à voir sur quoi ni où cela a été paramétré.
Dans "gestion des cours et des catégorie", je navigue au hasard et vérifie l'attribution des rôles mais je ne trouve pas grand chose. Difficile de faire un état des lieux afin de savoir précisément qui a des droits spécifiques sur la plateforme (qui est gestionnaire au delà du contenu d'un cours).
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour,

"...où cela a été paramétré" sur une version Moodle 3.9 ?

Dans la page "Gestion des cours et catégories", à côté du nom de la catégorie, on a un "Menu d'actions" (icône roue dentée) qui permet d'accéder à la page "Attribution des rôles".

Si vous avez beaucoup de catégories où l'on a attribué le rôle gestionnaire, je vous propose d'aller interroger la base de données en lançant une requête SQL qui devrait vous donner les noms des utilisateurs gestionnaires et leurs catégories:

SELECT u.lastname AS NOM, u.firstname AS PRENOM, cc.name AS CATEGORIE
FROM `mdl_role_assignments` AS ra
JOIN `mdl_context` AS c ON c.id = ra.contextid
JOIN `mdl_user` AS u ON u.id = ra.userid
JOIN `mdl_course_categories` AS cc ON cc.id = c.instanceid
WHERE `roleid`=1

mdl étant éventuellement à remplacer par le préfixe des tables de votre base de données.

Exemple, avec le plugin Moodle Adminer:



Christian


Moyenne des évaluations Utile (2)
En réponse à Christian Bocquet

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,

Merci pour toute ces infos. Il s'agit bien d'une version 3.9. J'arrive bien à accéder aux infos catégorie par catégorie mais pas à avoir une vue globale utilisateur par utilisateur.

Du coup, la technique d'interroger la BDD répond à mes besoins. Merci !



En réponse à Christian Bocquet

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Merci beaucoup !
J'ai installé le plugin Moodle Adminer, et avec cette requête SQL, j'y vois déjà beaucoup plus clair.

Seuls bémols, je ne vois pas comment faire une recherche par nom de catégorie sur Moodle 3.9, ni d'ailleurs par ID de catégorie.

L’organisation de ma plateforme est assez complexe avec un historique sur les 3 dernières années et peut-être des sous-catégories portant le même non.

Il faut que je me penche sur l’organisation des tables de Moodle pour pourvoir faire d'autres requête SQL.
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Oui, on peut "Rechercher des cours" mais pas des catégories.

Dans la première ligne de la requête SQL vous pouvez ajouter "cc.id AS ID" pour obtenir l'identifiant de la catégorie et pour se rendre dans la catégorie d'identifiant ID on écrit dans la barre d'adresse du navigateur:
votresitemoodle/course/index.php?categoryid=ID


En réponse à Christian Bocquet

Re: gestion des rôles utilisateurs - Moodle 3.9

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Nouvelle proposition de requête pour éviter les doublons et si des catégories ont le même nom:

SELECT DISTINCT cc.id AS ID, cc.name AS CATEGORIE, u.lastname AS NOM, u.firstname AS PRENOM
FROM `mdl_role_assignments` AS ra
JOIN `mdl_context` AS c ON c.id = ra.contextid
JOIN `mdl_user` AS u ON u.id = ra.userid
JOIN `mdl_course_categories` AS cc ON cc.id = c.instanceid
WHERE `roleid`=1
ORDER BY cc.id


En réponse à Christian Bocquet

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Merci pour la requête.
C'est assez bizarre, cela fonctionne parfaitement pour trouver les catégories ayant un rôle gestionnaire affecté dessus.

En revanche, d'autres catégories affichées par la requête n'ont pas de rôle gestionnaire affecté. J'ai vérifié les cours de la dite catégorie et rien non plus.

j'y vois plus clair avec la requête de Didier Cadiou ci-dessous qui permet en plus d'afficher un lien vers la catégorie ou le cours. Bizarrement, le lien vers un cours fonctionne parfaitement (il y a un ou plusieurs rôle gestionnaire affecté) mais le cours n'est absolument pas rangé dans la catégorie indiqué sur sa ligne.
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par didier cadiou,
Bonjour Laurent.

Sur Moodle 3.11 (mais je suis quasi sur qu'il y a l'équivalent sur une 3.9), depuis l'interface utilisateur, en visitant le profil d'un utilisateur, il est possible de voir l'intégralité des rôles attribués à cet utilisateurs dans les différents contextes : cliquer sur Préférences, puis Rôles de cet utilisateur (admin/roles/usersroles.php?userid=xxx&courseid=yyy, le courseid est requis mais ne change rien au résultat puisque la réponse est globale).

En SQL, les requêtes proposées sont valides. Juste pour fignoler, on peut donner un peu plus d'info sur les catégories, y'-compris un lien direct vers la page d'attribution des rôles dans la catégorie en question

SELECT DISTINCT cc.id AS ID,
    cc.name AS CATEGORIE,
    u.lastname AS NOM,
    u.firstname AS PRENOM,
    concat('https://chemin_racine_de_la_plateforme/admin/roles/assign.php?contextid=', c.id) as attribution_role_link
FROM `mdl_user` AS u
    JOIN `mdl_role_assignments` AS ra ON ra.userid = u.id
    JOIN `mdl_context` AS c ON c.id = ra.contextid
    JOIN `mdl_course_categories` AS cc ON cc.id = c.instanceid
WHERE `roleid`=1
ORDER BY cc.id;
    
Remarques :
  • le roleid se paramètre sur les plateformes (voir le résultat dans mdl_role). Suivant la configuration, par défaut ou non, (ou le besoin) la valeur du roleid peut devoir être modifiée.
  • avec un client SQL comme dbeaver (https://dbeaver.io/), les liens ainsi créés sont directement cliquables dans les cellules de résultat.
  • la fonction de concaténation, concat(), existe sur MySQL mais sur d'autres SGBD (Oracle, SQLite) il faut l'écrire autrement (par exemple pour Oracle :
    ('https://chemin_racine_de_la_plateforme/admin/roles/assign.php?contextid=' || c.id) as attribution_role_link)
En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Bonjour Didier,
tout se que je trouve sur Moodle 3.9 via le profil utilisateur est un encart "information détaillée du cours" où l'on voit effectivement la liste des cours où l’utilisateur a un rôle, "étudiant" compris.

La requête SQL a parfaitement fonctionné via le plugin adminer, j'ai la liste de tout les utilisateurs ayant un rôle gestionnaire dans une catégorie ou un cours et le lien me permettant d'accéder à ce cours ou cette catégorie.

Je vais pouvoir extraire les données dont j'ai besoin.

ps : existe-il une formation pour comprendre comment fonctionne les base de donnée Moodle ? J'ai quelques notions de MySQL mais rien de spécifique à Moodle.
En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Il y a tout de même un bémol inexplicable et qui m'intrigue concernant les lignes correspondant à des cours ayant un rôle de gestionnaire affecté : le lien web mène mène bien à un cours correspondant à la requête, mais le numéro et le nom de la catégorie indiqué sur la même ligne ne correspond absolument pas à la catégorie où est rangé le dit-cours.
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par didier cadiou,

Bonjour Laurent.

Il est étrange que les infos relatives à la catégorie soient fausses. Chaque cours n'a qu'une catégorie parente, il n'y a normalement aucun risque de confusion à ce niveau. Attention ne pas confondre parent (le père ) et l'ensemble des ancêtres (le père, le grand père, l'arrière grand père, etc). Pour contrôler les infos de catégorie, il faut bien regarder celles du "père".

En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Bonjour Didier,
j'ai fait une courte vidéo pour illustrer ce que je fais, mais je vais l'envoyer par mp par souci de confidentialité.
J’exécute la requête via le plugin adminer. Quand une catégorie a un gestionnaire, tout est cohérent : c'est le cas par exemple pour la 1ère ligne du tableau, la catégorie ayant l'ID 1 a bien la personne associé sur la même ligne en gestionnaire.
En revanche, sur la 2ème ligne, la catégorie ID14 est bien "Sciences Humaines et Sociales", mais l'utilisateur associé n'est gestionnaire ni de la catégorie, ni d'un cours contenu dans cette catégorie. Il est gestionnaire du cours en lien dans la colonne "attribution_role_link" qui n'est pas rangé du tout dans la catégorie 14.

Peux-être que quelque chose m'échappe.
En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par didier cadiou,
Re bonjour Laurent.

J'ai bien regardé le message privé que tu m'as fait suivre avec effectivement le soucis que tu mentionnes, où la catégorie indiquée n'a rien à voir avec ce que tu attends.

En fait je n'avais pas assez regardé la requête, elle comporte un manque.

La jointure mdl_context - mdl_role_assignments est une jointure qui doit être conditionnelle. Le champs instanceid n'est pas le seul à prendre en compte dans la jointure. En effet, la table des contextes contient tous les contextes et tous ne sont pas des catégories. Il y a aussi des contextes qui correspondent à des cours, au système, à des utilisateurs, des blocs, etc. Donc pour faire la bonne jointure il faut aussi intégrer le type de contexte concerné (ce que Moodle appelle le niveau de contexte).

Dans l'exemple que tu m'as fait suivre, l'id 14 n'est peut être pas un id de catégorie. Le lien retourné par la requête, lui, fonctionne car il cible un contexte.

Dans ton exemple, le contexte qui confère à ton utilisateur son rôle, référence un élément qui a l'id 14, mais il faut déterminer dans quel table aller chercher cet id. Cette information se déduit de la valeur du champs contextelevel.

En fouillant précédemment dans le code j'ai pu établir cette liste (c'est probablement documenté officiellement, mais je ne sais pas où) :

Donc pour avoir quelque chose de plus complet et plus juste, il faudrait par exemple ceci (à noter : les nouvelles colonnes dans le SELECT, les LEFT JOIN, Les conditions de jointure sur contextlevel) :

SELECT DISTINCT c.instanceid AS ID,
    t1.name AS categorie,
    t2.shortname AS course,
    t3.id AS moduleid,
    if(c.contextlevel = 10, 'oui', 'non') as contextesysteme,
    u.lastname AS NOM,
    u.firstname AS PRENOM,
    concat('https://url_de_le_plateforme/admin/roles/assign.php?contextid=', c.id) as attribution_role_link 
FROM `mdl_user` AS u
    JOIN `mdl_role_assignments` AS ra ON ra.userid = u.id
    JOIN `mdl_context` AS c ON c.id = ra.contextid
    left JOIN `mdl_course_categories` AS t1 
    	ON t1.id = c.instanceid
    		and c.contextlevel = 40 -- contexte catégorie
    left JOIN `mdl_course` AS t2 
    	ON t2.id = c.instanceid
    		and c.contextlevel = 50 -- contexte cours
    left JOIN `mdl_course_modules` AS t3 
    	ON t3.id = c.instanceid
    		and c.contextlevel = 70 -- contexte module
WHERE `roleid`=1
ORDER BY c.instanceid;
il est donc possible de faire ces jointures en complexifiant les conditions de jointure (ce qui suit 'ON') pour systématiquement préciser pour quel niveau (type) de contexte la jointure est valide.

Il peut être aussi intéressant, comme je l'ai fait ci-dessus, d'utiliser des 'LEFT JOIN' pour sortir toutes les lignes, qu'une correspondance ait été trouvée ou non avec la table liée. En l'absence de correspondance c'est 'null' qui est retourné. Ainsi la requête ci-dessus ne mettra à jour qu'un seul des 4 champs (categorie, course, moduleid, contextesysteme), les autres seront à 'null', en fonction de la valeur du contextlevel. (pour contextesysteme ce sera le résultat du if plutôt).
Moyenne des évaluations Utile (1)
En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par Laurent JALICON,
Merci pour cette réponse très complète. Comme quoi tout a une explication, il n'y a rien de surnaturel sur Moodle !

je vais tester cette requête !
En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,

Pour comprendre quelles informations existent dans les tables de Moodle, consulter un grand nombre de requêtes pré-écrites, et savoir comment filtrer ces informations, et tirer un maximum de choses possible de la base de données interne de Moodle, lire la page de documentation sur les requêtes ad-hoc contribuées (en anglais).

On y trouve entre autre les différents niveaux de contexte.

Si quelqu'un avait la patience de traduire les différentes explications de cette page en français (hors requêtes), cela ferait certainement gagner du temps à pas mal de monde dans la communauté francophone...

Séverin
Moyenne des évaluations Utile (3)
En réponse à Séverin Terrier

Re: gestion des rôles utilisateurs - Moodle 3.9

par didier cadiou,
Merci Séverin pour l'URL. Je n'y étais jamais allé.
En réponse à didier cadiou

Re: gestion des rôles utilisateurs - Moodle 3.9

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Avec plaisir, ça peut servir et apporter beaucoup à beaucoup de monde.

Randy Thornton a fait un énorme travail d'amélioration de cette page depuis juillet 2021, en ajoutant et détaillant énormément d'éléments très utiles, au fil des mois. Malheureusement, il a annoncé récemment qu'il ne maintiendra plus cette page activement.

Séverin

En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles
"...où cela a été paramétré" sur une version Moodle 4 et thème Boost ?

"Attribution des rôles" n’apparaît plus dans le "Menu d'actions". Dans ce menu, il faut cliquer sur "Permissions".
Puis dans le menu en haut à gauche Permissions, on peut sélectionner "Attribution des rôles".
En réponse à Laurent JALICON

Re: gestion des rôles utilisateurs - Moodle 3.9

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles
Pour voir si d'autres personnes sont admin de la plateforme, on doit suivre le chemin :
Administration du site -> Utilisateurs -> Permissions -> Administrateurs du site
Moyenne des évaluations Utile (1)