-
Notifications
You must be signed in to change notification settings - Fork 6
2.e. 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
.
Pour définir les classes de permissions, on utilise le package djangorestframework-composed-permissions.
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, inclutitemmanager
), -
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.