Object Level Permissions
실제로 우리는, 모든 코드 스니펫들이 누구에게나 보여지지만 오직 해당 스니펫을 생성한 사용자만 업데이트 혹은 삭제를 할수 있게 만들고 싶습니다.
이것을 하기 위해서는, 커스텀 권한을 생성할 필요가 있습니다.
permissions.py
라는 파일을, snippet 앱 안에 생성해 줍니다. snippets/permissions.py
파일에, 아래 내용을 추가해 줍니다.
1 | from rest_framework import permissions |
이제 이 커스텀 권한을 우리의 스니펫 인스턴스 앤드포인트에 추가해줍니다. SnippetDetail 뷰 클래스 안에 있는 permission_classes 속성에 추가해 줍니다.
1 | permission_classes = [permissions.IsAuthenticatedOrReadOnly, |
우리가 작성한 IsOwnerOrReadOnly
클래스를 가져오는것을 까먹으면 안됩니다.
1 | from snippets.permissions import IsOwnerOrReadOnly |
이제, 브라우저를 다시 열어보면, 코드 스니펫을 생성한 사용자가 로그인 하였을때, DELETE
와 PUT
액션들이 스니펫 인스턴스의 앤드포인트에만 나타나는것을 확인 할수 있습니다.