permissions.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from rest_framework import permissions
  2. class IsOwner(permissions.BasePermission):
  3. """
  4. Custom permission to only allow owners of an object to view or edit it.
  5. """
  6. def has_object_permission(self, request, view, obj):
  7. return obj.owner == request.user
  8. class IsDomainOwner(permissions.BasePermission):
  9. """
  10. Custom permission to only allow owners of a domain to view or edit an object owned by that domain.
  11. """
  12. def has_object_permission(self, request, view, obj):
  13. return obj.domain.owner == request.user
  14. class IsUnlocked(permissions.BasePermission):
  15. """
  16. Allow non-safe methods only when account is not locked.
  17. """
  18. message = 'You cannot modify DNS data while your account is locked.'
  19. def has_permission(self, request, view):
  20. return bool(
  21. request.method in permissions.SAFE_METHODS or
  22. not request.user.locked
  23. )
  24. class IsUnlockedOrDyn(permissions.BasePermission):
  25. """
  26. Allow non-safe methods only for unlocked or dynDNS users.
  27. """
  28. message = IsUnlocked.message
  29. def has_permission(self, request, view):
  30. return bool(
  31. request.method in permissions.SAFE_METHODS or
  32. request.user.dyn or
  33. not request.user.locked
  34. )