Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

2.e. Permissions et rôles

tizot edited this page Jan 28, 2016 · 2 revisions

Permissions et rôles

Le système de permissions de Chocapix est assez sophistiqué car les droits sont conditionnés par les bars.

Les outils pour les permissions sont définis dans le fichier bars_core/perms.py.
Une liste de "rôles" est définie dans bars_core/roles.py.

Permissions

Pour définir les classes de permissions, on utilise le package djangorestframework-composed-permissions.

Rôles

On a défini un certain nombre de rôles correspondant à des fonctions au sein d'un bar. Un rôle est associé à une liste de permissions. Voici la liste des rôles (pour les permissions associées, voir le code source) :

  • rôles dans un bar classique :
    • customer (consommateur de base),
    • agios_daemon (rôle spécifique pour le script d'agios),
    • newsmanager (gestionnaire d'actualités),
    • policeman (droit de mettre des amendes),
    • accountmanager (droit de créer et modifier des comptes),
    • treasurer (droits sur les actions financières),
    • itemmanager (droits sur les aliments du bar),
    • inventorymanager (droit de faire des inventaires),
    • appromanager (droit de faire des appros, inclut itemmanager),
    • stockmanager (combo des deux rôles précédents),
    • staff (tous les droits sauf la modification des rôles des utilisateurs dans le bar),
    • admin (tous les droits dans le bar) ;
  • rôles dans le bar root :
    • barmanager (gestion des bars),
    • usercreator (création d'utilisateurs),
    • usermanager (gestion des utilisateurs),
    • itemcreator (création d'aliments globaux),
    • itemmanager (gestion d'aliments globaux),
    • staff (tous les droits sauf la modification des rôles dans le bar root),
    • admin (tous les droits).

Donner des droits à un utilisateur revient donc à lui ajouter un rôle dans un bar. Le modèle Role défini dans le fichier bars_core/models/role.py est utilisé pour cela. Chaque objet User possède un attribut role_set comprenant la liste des rôles que possède l'utilisateur.