« Calcul des permissions » : différence entre les versions

De MoodleDocs
Aller à :navigation, rechercher
Aucun résumé des modifications
Ligne 20 : Ligne 20 :
Voici un exemple de fonctionnement de l'algorithme. On évalue si, avec les définitions standards des rôles et capacités (et sans dérogation), un utilisateur ayant le rôle d'enseignant a le droit d'évaluer les messages des forums.
Voici un exemple de fonctionnement de l'algorithme. On évalue si, avec les définitions standards des rôles et capacités (et sans dérogation), un utilisateur ayant le rôle d'enseignant a le droit d'évaluer les messages des forums.


* L'utilisateur Victor Hugo a le rôle ''enseignant''
* L'utilisateur Victor Hugo a dans le cours le rôle ''Étudiant''
* L'utilisateur Victor Hugo a dans le forum le rôle ''Enseignant non éditeur''
* La capacité testée est ''mod/forum:rate''
* La capacité testée est ''mod/forum:rate''
* Le contexte est celui d'un forum dans un cours.
* Le contexte est celui d'un forum dans un cours.

Version du 3 octobre 2013 à 21:15


Cette page détaille le processus d'évaluation des permissions de Moodle, version 2.0 et ultérieures.

Évaluation des permissions

L'algorithme d'évaluation des permissions de Moodle est implémenté par la fonction has_capability() (qui appelle elle-même la fonction has_capability_in_accessdata()), dans le fichier lib/accesslib.php. Cette fonction retourne true si une capacité donnée est permise pour l'utilisateur, et false dans le cas contraire.

Algorithme de calcul de la permission pour une capacité

  1. On vérifie si l'utilisateur est un administrateur. Si c'est le cas, la fonction retourne true et l'algorithme se termine.
  2. On construit la liste de toutes les attributions de rôle de l'utilisateur dans le contexte actuel et tous les contextes supérieurs.
  3. On détermine tous les rôles qui comportent la capacité donnée dans leur définition ou dans une dérogation, pour le contexte actuel et tous les contextes supérieurs (sans tenir compte de l'utilisateur).
  4. Pour chacun des rôles trouvé à l'étape précédente, on évalue séparément la permission définie dans le contexte actuel et tous les contextes supérieurs, en commençant par le contexte le plus spécifique. On ne tient pas compte de l'utilisateur. Ceci détermine si le rôle est autorisé pour cette capacité.
    • Dès qu'un ALLOW est trouvé pour un des contextes dans une des définitions ou des dérogations du rôle donné, le rôle est autorisé, ...
    • ... à moins qu'une valeur PROHIBIT (interdire) ne soit détectée dans un des contextes supérieur (n'importe lequel), auquel cas le rôle est interdit.
  5. La fonction has_capability() retourne true, c'est-à-dire que la capacité est permise pour l'utilisateur dans le contexte actuel, s'il possède simultanément au moins un rôle autorisé et aucun rôle interdit. Dans tous les autres cas (p.ex. aucun rôle autorisé, un rôle interdit), la fonction retourne false.

Illustration

Voici un exemple de fonctionnement de l'algorithme. On évalue si, avec les définitions standards des rôles et capacités (et sans dérogation), un utilisateur ayant le rôle d'enseignant a le droit d'évaluer les messages des forums.

  • L'utilisateur Victor Hugo a dans le cours le rôle Étudiant
  • L'utilisateur Victor Hugo a dans le forum le rôle Enseignant non éditeur
  • La capacité testée est mod/forum:rate
  • Le contexte est celui d'un forum dans un cours.