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