autorisations de niveau d'objet
Exemple de http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/#object-level-permissionsDjango: autorisations de niveau objet SECS
class IsOwnerOrReadOnly(permissions.BasePermission):
"""
Custom permission to only allow owners of an object to edit it.
"""
def has_object_permission(self, request, view, obj):
# Read permissions are allowed to any request,
# so we'll always allow GET, HEAD or OPTIONS requests.
if request.method in permissions.SAFE_METHODS:
return True
# Write permissions are only allowed to the owner of the snippet.
return obj.owner == request.user
Mon besoin: queryset de tous les objets d'un utilisateur peut modifier
Je veux avoir un django-ORM queryset qui contient tous les objets qu'un utilisateur donné peut éditer.
Je suppose que je pourrais résoudre ce problème en créant un filtre django-ORM complexe (avec ou et distinct)
Non SEC
Mais ce n'est pas DRY. Ce n'est pas SEC parce que j'ai besoin de coder les choses deux fois. Une fois en has_object_permission()
et une fois dans le filtre django-orm.
Question
Comment résoudre mes besoins (queryset de tous les objets d'un utilisateur peut modifier) sans duplication de la vérification des permissions?
Bien que ce ne soit pas la réponse que je cherchais: Merci d'avoir pensé à cela. – guettli
Ouais, c'est quelque chose qui me dérange aussi et qui ne convient pas au framework Django REST. Je suis impatient de voir si quelqu'un a une autre option. – Linovia