diff --git a/scipost_django/scipost/views.py b/scipost_django/scipost/views.py index bd5fefbebcb2cf0b6fa171dd89092f3d2cf18d82..6808395e23919ca004acece8f3f39bf4f1afdbb1 100644 --- a/scipost_django/scipost/views.py +++ b/scipost_django/scipost/views.py @@ -2,7 +2,7 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" -import json +import urllib from django.utils import timezone from django.shortcuts import get_object_or_404, render @@ -882,6 +882,15 @@ class SciPostLoginView(LoginView): return reverse_lazy("scipost:index") +def prompt_to_login(request): + """Prompt to login before viewing the requested page.""" + return redirect( + reverse("scipost:login") + + "?next=" + + urllib.parse.quote(request.get_full_path()) + ) + + def raw_user_auth_info(request): form = UserAuthInfoForm(request.POST or None) diff --git a/scipost_django/submissions/views/__init__.py b/scipost_django/submissions/views/__init__.py index c3bd354ce24a3715467466929ce23e483e5de721..d68edfd83ea678ac0c006f30f612638bedc8e8bc 100644 --- a/scipost_django/submissions/views/__init__.py +++ b/scipost_django/submissions/views/__init__.py @@ -122,7 +122,7 @@ from scipost.decorators import is_contributor_user from scipost.forms import RemarkForm, SearchTextForm from scipost.mixins import PaginationMixin, PermissionsMixin from scipost.models import Contributor, Remark - +from scipost.views import prompt_to_login ################ # Autocomplete # @@ -616,12 +616,13 @@ def submission_detail(request, identifier_w_vn_nr): if not submission.visible_public and not is_author: if not request.user.is_authenticated: - raise Http404 + return prompt_to_login(request) + elif ( not request.user.has_perm("scipost.can_assign_submissions") and not submission.fellows.filter(contributor__user=request.user).exists() ): - raise Http404 + raise PermissionDenied() if is_author: context["proofs_decision_form"] = ProofsDecisionForm()