Menggunakan Permission

Sampai modul sebelumnya, kita sudah bisa mendaftarkan user baru, mendapatkan token untuk menggunakan API.

Namun ada masalah, yaitu setiap user dapat mengupdate dan menghapus artikel yang bukan miliknya. Untuk itu kita perlu menambahkan permission.

Pada folder backend, buat file baru permissions.py, lalu tambahkan kode berikut:

from rest_framework import permissions

class IsAuthor(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj.author == request.user

Kemudian buka file backend/views.py, tambahkan code untuk cek permissions:

from .models import Article
from .serializers import ArticleSerializer

from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
# import permission
from .permissions import IsAuthor

class ArticleViewSet(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
    lookup_field = 'slug'
    
    #tambahkan permission IsAuthor
    permission_classes = [IsAuthenticated, IsAuthor]
    
    def perform_create(self, serializer):
        serializer.save(author = self.request.user)

Sekarang, user yang bukan author, hanya dapat melihat isi artikel, tetapi tidak bisa menghapus dan mengupdate (tombol upddate dan delete tidak tampil).

Sampai disini tutorial Membuat REST API menggunakan Django REST Framework telah selesai. Semoga bermanfaat.

Sharing is caring: