Calcul des permissions

De MoodleDocs
Révision datée du 3 octobre 2013 à 19:25 par Nicolas Martignoni (discussion | contributions) (Page créée avec « {{Rôles}} Cette page détaille le processus d'évaluation des permissions de Moodle, version 2.0 et ultérieures. == Évaluation des permissions == L'algorithme d'éval... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à :navigation, rechercher


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.