diff --git a/djangoldp_notification/filters.py b/djangoldp_notification/filters.py new file mode 100644 index 0000000000000000000000000000000000000000..e3201fc74d1064a80644ca57400a301575327645 --- /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 52d68a928921a53ce3bc376363d4a27916ddef70..1e4799b793390f87d5410f353ff8e51a18000945 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 78936c389660d3442323077114943ff5e2b8d343..dade7fb34ca4b0e87e7536144be461e4d772886d 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