12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from rest_framework import permissions
- class IsOwner(permissions.BasePermission):
- """
- Custom permission to only allow owners of an object to view or edit it.
- """
- def has_object_permission(self, request, view, obj):
- return obj.owner == request.user
- class IsDomainOwner(permissions.BasePermission):
- """
- Custom permission to only allow owners of a domain to view or edit an object owned by that domain.
- """
- def has_object_permission(self, request, view, obj):
- return obj.domain.owner == request.user
- class IsUnlocked(permissions.BasePermission):
- """
- Allow non-safe methods only when account is not locked.
- """
- message = 'You cannot modify DNS data while your account is locked.'
- def has_permission(self, request, view):
- return bool(
- request.method in permissions.SAFE_METHODS or
- not request.user.locked
- )
- class IsUnlockedOrDyn(permissions.BasePermission):
- """
- Allow non-safe methods only for unlocked or dynDNS users.
- """
- message = IsUnlocked.message
- def has_permission(self, request, view):
- return bool(
- request.method in permissions.SAFE_METHODS or
- request.user.dyn or
- not request.user.locked
- )
|