diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index ba5aa34773a3a09c3292e56c70a2ab75e3907457..f9f487c6c85d81a89d3ba00503a3e277bc62c890 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -130,6 +130,7 @@ class BaseReviewerSubmissionsTable(BaseAdminSubmissionsTable):
         return super().get_queryset().reviewed_by(self.request.user)
 
 
+@method_decorator(staff_required, name='dispatch')
 class SubmissionOverviewView(AllActivityContextMixin, BaseAdminSubmissionsTable):
     template_name = 'funds/submissions_overview.html'
     table_class = SummarySubmissionsTable
@@ -157,6 +158,7 @@ class SubmissionOverviewView(AllActivityContextMixin, BaseAdminSubmissionsTable)
         )
 
 
+@method_decorator(staff_required, name='dispatch')
 class SubmissionAdminListView(AllActivityContextMixin, BaseAdminSubmissionsTable):
     template_name = 'funds/submissions.html'
     form_views = [
@@ -173,6 +175,7 @@ class SubmissionListView(ViewDispatcher):
     reviewer_view = SubmissionReviewerListView
 
 
+@method_decorator(staff_required, name='dispatch')
 class SubmissionsByRound(AllActivityContextMixin, BaseAdminSubmissionsTable, DelegateableListView):
     template_name = 'funds/submissions_by_round.html'
     form_views = [
@@ -196,6 +199,7 @@ class SubmissionsByRound(AllActivityContextMixin, BaseAdminSubmissionsTable, Del
         return super().get_context_data(object=self.obj, **kwargs)
 
 
+@method_decorator(staff_required, name='dispatch')
 class SubmissionsByStatus(BaseAdminSubmissionsTable):
     template_name = 'funds/submissions_by_status.html'
     status_mapping = PHASES_MAPPING