본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[TIL] 권한 있는 사용자

상품 수정이나 삭제를 할 때 권한이 있는 사용자(게시글 작성자)만 할 수 있도록 해야한다

그래서 뷰에서 검증하는 코드를 넣어주었다

 

 

class ProductDetailAPIView(APIView):
    permission_classes = [
        IsAuthenticatedOrReadOnly,  # GET은 인증이 필요없고 POST, PUT, DELETE 요청은 인증이 필요함
    ]

    # 상품 수정
    def put(self, request, productID):
        product = get_object_or_404(Product, id=productID)
        writer = product.author
        if request.user == writer:
            serializer = ProductSerializer(
                instance=product, data=request.data, partial=True
            )
            if serializer.is_valid(raise_exception=True):
                serializer.save()
                return Response(serializer.data)
        else:
            return Response("수정 권한이 없는 사용자입니다.")

    # 상품 삭제
    def delete(self, request, productID):
        product = get_object_or_404(Product, id=productID)
        writer = product.author
        if request.user == writer:
            product.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
        else:
            return Response("삭제 권한이 없는 사용자입니다.")