From c1adcfeb8cc3bc5939a15225e339df1a5c92a775 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Lemee <happydev@lemee.co>
Date: Tue, 17 Nov 2020 12:26:10 +0000
Subject: [PATCH] minor: filterbackends for permissions

---
 djangoldp_notification/filters.py     | 18 ++++++++++++++++++
 djangoldp_notification/permissions.py |  6 ++++++
 setup.cfg                             |  2 +-
 3 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 djangoldp_notification/filters.py

diff --git a/djangoldp_notification/filters.py b/djangoldp_notification/filters.py
new file mode 100644
index 0000000..e3201fc
--- /dev/null
+++ b/djangoldp_notification/filters.py
@@ -0,0 +1,18 @@
+from djangoldp.filters import LDPPermissionsFilterBackend
+
+
+class InboxFilterBackend(LDPPermissionsFilterBackend):
+    def filter_queryset(self, request, queryset, view):
+        if not request.user.is_anonymous:
+            return queryset.filter(user=request.user)
+        else:
+            from djangoldp_notification.models import Notification
+            return Notification.objects.none()
+
+
+class SubscriptionsFilterBackend(LDPPermissionsFilterBackend):
+    def filter_queryset(self, request, queryset, view):
+        if request.method == "OPTIONS":
+            return queryset
+        else:
+            return super().filter_queryset(request, queryset, view)
diff --git a/djangoldp_notification/permissions.py b/djangoldp_notification/permissions.py
index 52d68a9..1e4799b 100644
--- a/djangoldp_notification/permissions.py
+++ b/djangoldp_notification/permissions.py
@@ -1,9 +1,13 @@
 from django.contrib.auth import get_user_model
+
 from djangoldp.permissions import LDPPermissions
+from djangoldp_notification.filters import InboxFilterBackend, SubscriptionsFilterBackend
 from rest_framework.reverse import reverse
 
 
 class InboxPermissions(LDPPermissions):
+    filter_backends = [InboxFilterBackend]
+
     def has_permission(self, request, view):
         from djangoldp.models import Model
 
@@ -41,6 +45,8 @@ class InboxPermissions(LDPPermissions):
 
 
 class SubscriptionsPermissions(LDPPermissions):
+    filter_backends = [SubscriptionsFilterBackend]
+
     def has_permission(self, request, view):
         if request.user.is_anonymous and not request.method == "OPTIONS":
             return False
diff --git a/setup.cfg b/setup.cfg
index 78936c3..dade7fb 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -10,7 +10,7 @@ license = MIT
 [options]
 packages = find:
 install_requires =
-    djangoldp>=1.2.0
+    djangoldp>=1.3.0
 
 [options.extras_require]
 include_package_data = True
-- 
GitLab