Ich möchte einigen Benutzern den Zugriff gewähren, einige Benutzer aktualisieren den Zugriff und keinen Zugriff auf nicht wiederhergestellte Benutzer für meine DRF-API.
In meinem erweiterten Benutzermodell gibt es zwei Felder, die festlegen, ob ein Benutzer die API abrufen oder aktualisieren darf. Wie sollte ich die Logik in meine benutzerdefinierte DRF-Berechtigungsklasse schreiben, um diese beiden Felder zu überprüfen und abhängig von True oder False Abrufen oder Aktualisieren zu gewähren? Soll ich dafür ein ViewSet verwenden oder separate ListAPIView-, RetrieveAPIView- und UpdateAPIView-Klassen mit Mixins verwenden? Was ist der beste Weg, dies zu tun?Django - Wie gewähren Sie bestimmten Benutzern in DRF benutzerdefinierte Berechtigungen?
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User)
allowRetrieveAPI = models.BooleanField(default=False,)
allowUpdateAPI = models.BooleanField(default=False,)
class Track(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.SET_NULL, verbose_name="Submitted by", default=1)
artist = models.CharField(max_length=100,)
title = models.CharField(max_length=100,)
views.py
class CheckAPIPermissions(permissions.BasePermission):
# allow retrieve if userprofile.allowReadAPI is True
# allow update if user userprofile.allowUpdateAPI is True
def has_permission(self, request, view):
# return something
def check_object_permission(self, user, obj):
# return something
def has_object_permission(self, request, view, obj):
# return something
class TrackViewSet(viewsets.ModelViewSet):
queryset = Track.objects.all()
serializer_class = TrackSerializer
permission_classes = (CheckAPIPermissions,)
Jeder kann auf die Listenmethode zugreifen, dann? – zaidfazil
Ich habe das vergessen, aber wenn sie in der Lage sind, abzurufen, sollte ihnen die Listenmethode erlaubt sein. – bayman