mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-22 10:28:21 +02:00
De l'inclusif, partout
Signed-off-by: Emmy D'ANELLO <ynerant@crans.org>
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
Droits
|
||||
======
|
||||
|
||||
Le système de droit par défault de django n'est pas suffisament granulaire pour les besoins de la NoteKfet2020.
|
||||
Un système custom a donc été développé.
|
||||
Le système de droit par défaut de Django n'est pas suffisamment granulaire pour les besoins de la Note Kfet 2020.
|
||||
Un système personnalisé a donc été développé.
|
||||
|
||||
Il permet la création de Permission, qui autorise ou non a faire une action précise sur un ou des objets
|
||||
de la base de données.
|
||||
@ -22,12 +22,12 @@ Une permission est un Model Django dont les principaux attributs sont :
|
||||
* ``query`` : Requête sur la cible, encodé en JSON, traduit en un Q object (cf `Query <#compilation-de-la-query>`_)
|
||||
* ``field`` : le champ cible qui pourra être modifié. (tous les champs si vide)
|
||||
|
||||
Pour savoir si un utilisateur a le droit sur un modèle ou non, la requête est compilée (voir ci-dessous) en un filtre
|
||||
de requête dans la base de données, un objet de la classe ``Q`` (En SQL l'objet Q s'interprete comme tout ce qui suit
|
||||
Pour savoir si un⋅e utilisateur⋅rice a le droit sur un modèle ou non, la requête est compilée (voir ci-dessous) en un filtre
|
||||
de requête dans la base de données, un objet de la classe ``Q`` (En SQL l'objet Q s'interprète comme tout ce qui suit
|
||||
un ``WHERE ...`` Ils peuvent être combiné à l'aide d'opérateurs logiques. Plus d'information sur les Q object dans la
|
||||
`documentation officielle <https://docs.djangoproject.com/fr/2.2/topics/db/queries/#complex-lookups-with-q-objects>`_.
|
||||
|
||||
Ce Q object sera donc utilisé pour savoir si l'instance que l'on veux modifier est concernée par notre permission.
|
||||
Ce Q object sera donc utilisé pour savoir si l'instance que l'on veut modifier est concernée par notre permission.
|
||||
|
||||
Exception faite sur l'ajout d'objets : l'objet n'existant pas encore en base de données, il est ajouté puis supprimé
|
||||
à la volée, en prenant soin de désactiver les signaux.
|
||||
@ -36,7 +36,7 @@ Compilation de la query
|
||||
-----------------------
|
||||
|
||||
La query est enregistrée sous un format JSON, puis est traduite en requête ``Q`` récursivement en appliquant certains paramètres.
|
||||
Le fonctionnemente de base des permission peux être décris avec les differents opérations :
|
||||
Le fonctionnemente de base des permission peux être décris avec les différents opérations :
|
||||
|
||||
+----------------+-----------------------------+-------------------------------------+
|
||||
| opérations | JSON | Q object |
|
||||
@ -64,7 +64,7 @@ Exemples
|
||||
|
||||
{"is_superuser": true}
|
||||
|
||||
| si l'utilisateur cible est un super utilisateur.
|
||||
| si l'utilisateur⋅rice cible est un⋅e super utilisateur⋅rice.
|
||||
|
||||
* sur le model ``Note`` :
|
||||
|
||||
@ -74,7 +74,7 @@ Exemples
|
||||
["user","note", "pk"]
|
||||
}
|
||||
|
||||
| si l'identifiant de la note cible est l'identifiant de l'utilisateur dont on regarde la permission.
|
||||
| si l'identifiant de la note cible est l'identifiant de l'utilisateur⋅rice dont on regarde la permission.
|
||||
|
||||
* sur le model ``Transaction``:
|
||||
|
||||
@ -87,7 +87,7 @@ Exemples
|
||||
["user", "note", "balance"]}
|
||||
]
|
||||
|
||||
| si la source est la note de l'utilisateur et si le montant est inférieur à son solde.
|
||||
| si la source est la note de l'utilisateur⋅rice et si le montant est inférieur à son solde.
|
||||
|
||||
* Sur le model ``Alias``
|
||||
|
||||
@ -106,7 +106,7 @@ Exemples
|
||||
}
|
||||
]
|
||||
|
||||
| si l'alias appartient à une note de club ou s'il appartient à la note d'un utilisateur membre du club Kfet.
|
||||
| si l'alias appartient à une note de club ou s'il appartient à la note d'un⋅e utilisateur⋅rice membre du club Kfet.
|
||||
|
||||
* sur le model ``Transaction``
|
||||
|
||||
@ -130,19 +130,19 @@ Exemples
|
||||
Masques de permissions
|
||||
----------------------
|
||||
|
||||
Chaque permission est associée à un masque. À la connexion, l'utilisateur choisit le masque de droits avec lequel il
|
||||
souhaite se connecter. Les masques sont ordonnés totalement, et l'utilisateur aura effectivement une permission s'il est
|
||||
Chaque permission est associée à un masque. À la connexion, l'utilisateur⋅rice choisit le masque de droits avec lequel il
|
||||
souhaite se connecter. Les masques sont ordonnés totalement, et l'utilisateur⋅rice aura effectivement une permission s'il est
|
||||
en droit d'avoir la permission et si son masque est suffisamment haut.
|
||||
|
||||
Par exemple, si la permission de voir toutes les transactions est associée au masque "Droits note uniquement",
|
||||
se connecter avec le masque "Droits basiques" n'octroiera pas cette permission tandis que le masque "Tous mes droits" oui.
|
||||
Par exemple, si la permission de voir toutes les transactions est associée au masque « Droits note uniquement »,
|
||||
se connecter avec le masque « Droits basiques » n'octroiera pas cette permission tandis que le masque « Tous mes droits » oui.
|
||||
|
||||
Signaux
|
||||
-------
|
||||
|
||||
À chaque fois qu'un modèle est modifié, ajouté ou supprimé, les droits sont contrôlés. Si les droits ne sont pas
|
||||
suffisants, une erreur est lancée. Pour ce qui est de la modification, on ne contrôle que les champs réellement
|
||||
modifiés en comparant l'ancienne et la nouvele instance.
|
||||
modifiés en comparant l'ancienne et la nouvelle instance.
|
||||
|
||||
Graphe des modèles
|
||||
------------------
|
||||
|
Reference in New Issue
Block a user