From ec0f333154671f485071787e404cc00866ea9610 Mon Sep 17 00:00:00 2001 From: George Katsikas <giorgakis.katsikas@gmail.com> Date: Thu, 14 Dec 2023 14:33:05 +0100 Subject: [PATCH] add prompt to login redirect view method add proper errors to submission details --- scipost_django/scipost/views.py | 11 ++++++++++- scipost_django/submissions/views/__init__.py | 7 ++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/scipost_django/scipost/views.py b/scipost_django/scipost/views.py index bd5fefbeb..6808395e2 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 c3bd354ce..d68edfd83 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() -- GitLab