diff --git a/djangoldp/permissions.py b/djangoldp/permissions.py index 9de91cd7f814a727aabf73a5a3871bf7af9b4afb..337abc74e32be8aae73e49ee4048a4f78a8c5697 100644 --- a/djangoldp/permissions.py +++ b/djangoldp/permissions.py @@ -129,3 +129,31 @@ class AnonymousReadOnly(WACPermissions): return self.author_perms else: return self.authenticated_perms + + +class LoggedReadOnly(WACPermissions): + """ + Anonymous users: Nothing + Logged in users: can read all posts + """ + + anonymous_perms = [] + authenticated_perms = ['view'] + + def has_permission(self, request, view): + if view.action in ['list', 'retrieve'] and request.user.is_authenticated(): + return True + else: + return super().has_permission(request, view) + + def has_object_permission(self, request, view, obj): + if view.action in ["list", "retrieve"] and request.user.is_authenticated(): + return True + else: + return super().has_object_permission(request, view, obj) + + def user_permissions(self, user, obj): + if user.is_anonymous: + return self.anonymous_perms + else: + return self.authenticated_perms