permissions.py 1.0 KB

1234567891011121314151617181920212223242526272829303132
  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 WithinDomainLimitOnPOST(permissions.BasePermission):
  15. """
  16. Permission that requires that the user still has domain limit quota available, if the request is using POST.
  17. """
  18. message = 'Domain limit exceeded. Please contact support to create additional domains.'
  19. def has_permission(self, request, view):
  20. if request.method != 'POST':
  21. return True
  22. return request.user.limit_domains is None or request.user.domains.count() < request.user.limit_domains