added custom permission IsCreator

This commit is contained in:
Sam
2021-01-22 11:47:09 +00:00
parent 1df9aac998
commit 6c3ff8f1fa
2 changed files with 26 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
from rest_framework import permissions
class IsCreator(permissions.BasePermission):
"""
Grant permission is request.user same as obj.creator
"""
def has_object_permission(self, request, view, obj):
if obj is not None:
# allow is authenticated and method is safe
if request.method in permissions.SAFE_METHODS:
return True
# admins always have permission
if request.user.is_staff is True:
return True
# permission if user is the object's creator
return obj.creator == request.user
return False

View File

@@ -2,10 +2,15 @@ from django.shortcuts import render
# Create your views here. # Create your views here.
from rest_framework import viewsets from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from companies.models import Company from companies.models import Company
from companies.serializers import CompanySerializer from companies.serializers import CompanySerializer
from back_latienda.permissions import IsCreator
class CompanyViewSet(viewsets.ModelViewSet): class CompanyViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all() queryset = Company.objects.all()
serializer_class = CompanySerializer serializer_class = CompanySerializer
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]