im new at django -rest, поэтому я пытаюсь создать разрешение для сотрудников только GET или PUT их информации, я использовал has_object_permission, но я все еще могу получить доступ ко всем другим пользователям
permissions.py :
class IsHRadmin(BasePermission):
message = 'You are not allowed'
def has_permission(self,request,view):
methods = ['GET','POST','PUT','DELETE']
req = request.user
user = Role_User.objects.get(user_id_id=req.id)
role ="HR_Admin"
if str(user.role_id)==role:
print("Hello World")
if request.method in methods:
return True
return False
class IsEmployee(BasePermission):
message = 'You are not allowed'
def has_object_permission(self,request,view,obj):
methods = ['GET','PUT']
if request.method in methods:
if obj.owner == request.user:
return True
return False
views.py:
class EmployeeDetail(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView):
lookup_field = 'pk'
serializer_class = EmployeeSerializer
auth1 = IsAuthenticated & IsEmployee
auth2 = IsAuthenticated & IsHRadmin
permission_classes = [auth1 | auth2 | IsAdminUser]
def get_queryset(self):
return employee.objects.filter(pk=self.kwargs['pk'])
def get(self, request, *args, **kwargs):
response = self.retrieve(request, *args, **kwargs)
return response
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)