mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-17 10:13:56 -05:00
Fix: refactor base path settings, correct logout redirect (#5976)
This commit is contained in:
parent
a698791059
commit
23ceb2a5ec
@ -351,11 +351,19 @@ if __get_boolean("PAPERLESS_ENABLE_COMPRESSION", "yes"): # pragma: no cover
|
|||||||
|
|
||||||
ROOT_URLCONF = "paperless.urls"
|
ROOT_URLCONF = "paperless.urls"
|
||||||
|
|
||||||
FORCE_SCRIPT_NAME = os.getenv("PAPERLESS_FORCE_SCRIPT_NAME")
|
|
||||||
BASE_URL = (FORCE_SCRIPT_NAME or "") + "/"
|
def _parse_base_paths() -> tuple[str, str, str, str, str]:
|
||||||
LOGIN_URL = BASE_URL + "accounts/login/"
|
script_name = os.getenv("PAPERLESS_FORCE_SCRIPT_NAME")
|
||||||
LOGIN_REDIRECT_URL = "/dashboard"
|
base_url = (script_name or "") + "/"
|
||||||
LOGOUT_REDIRECT_URL = os.getenv("PAPERLESS_LOGOUT_REDIRECT_URL")
|
login_url = base_url + "accounts/login/"
|
||||||
|
login_redirect_url = base_url + "dashboard"
|
||||||
|
logout_redirect_url = os.getenv("PAPERLESS_LOGOUT_REDIRECT_URL", base_url)
|
||||||
|
return script_name, base_url, login_url, login_redirect_url, logout_redirect_url
|
||||||
|
|
||||||
|
|
||||||
|
FORCE_SCRIPT_NAME, BASE_URL, LOGIN_URL, LOGIN_REDIRECT_URL, LOGOUT_REDIRECT_URL = (
|
||||||
|
_parse_base_paths()
|
||||||
|
)
|
||||||
|
|
||||||
WSGI_APPLICATION = "paperless.wsgi.application"
|
WSGI_APPLICATION = "paperless.wsgi.application"
|
||||||
ASGI_APPLICATION = "paperless.asgi.application"
|
ASGI_APPLICATION = "paperless.asgi.application"
|
||||||
|
@ -5,6 +5,7 @@ from unittest import mock
|
|||||||
|
|
||||||
from celery.schedules import crontab
|
from celery.schedules import crontab
|
||||||
|
|
||||||
|
from paperless.settings import _parse_base_paths
|
||||||
from paperless.settings import _parse_beat_schedule
|
from paperless.settings import _parse_beat_schedule
|
||||||
from paperless.settings import _parse_db_settings
|
from paperless.settings import _parse_db_settings
|
||||||
from paperless.settings import _parse_ignore_dates
|
from paperless.settings import _parse_ignore_dates
|
||||||
@ -374,3 +375,58 @@ class TestPaperlessURLSettings(TestCase):
|
|||||||
|
|
||||||
self.assertIn(url, settings.CSRF_TRUSTED_ORIGINS)
|
self.assertIn(url, settings.CSRF_TRUSTED_ORIGINS)
|
||||||
self.assertIn(url, settings.CORS_ALLOWED_ORIGINS)
|
self.assertIn(url, settings.CORS_ALLOWED_ORIGINS)
|
||||||
|
|
||||||
|
|
||||||
|
class TestPathSettings(TestCase):
|
||||||
|
def test_default_paths(self):
|
||||||
|
"""
|
||||||
|
GIVEN:
|
||||||
|
- PAPERLESS_FORCE_SCRIPT_NAME is not set
|
||||||
|
WHEN:
|
||||||
|
- Settings are parsed
|
||||||
|
THEN:
|
||||||
|
- Paths are as expected
|
||||||
|
"""
|
||||||
|
base_paths = _parse_base_paths()
|
||||||
|
self.assertEqual(None, base_paths[0]) # FORCE_SCRIPT_NAME
|
||||||
|
self.assertEqual("/", base_paths[1]) # BASE_URL
|
||||||
|
self.assertEqual("/accounts/login/", base_paths[2]) # LOGIN_URL
|
||||||
|
self.assertEqual("/dashboard", base_paths[3]) # LOGIN_REDIRECT_URL
|
||||||
|
self.assertEqual("/", base_paths[4]) # LOGOUT_REDIRECT_URL
|
||||||
|
|
||||||
|
@mock.patch("os.environ", {"PAPERLESS_FORCE_SCRIPT_NAME": "/paperless"})
|
||||||
|
def test_subpath(self):
|
||||||
|
"""
|
||||||
|
GIVEN:
|
||||||
|
- PAPERLESS_FORCE_SCRIPT_NAME is set
|
||||||
|
WHEN:
|
||||||
|
- Settings are parsed
|
||||||
|
THEN:
|
||||||
|
- The path is returned and present in related settings
|
||||||
|
"""
|
||||||
|
base_paths = _parse_base_paths()
|
||||||
|
self.assertEqual("/paperless", base_paths[0]) # FORCE_SCRIPT_NAME
|
||||||
|
self.assertEqual("/paperless/", base_paths[1]) # BASE_URL
|
||||||
|
self.assertEqual("/paperless/accounts/login/", base_paths[2]) # LOGIN_URL
|
||||||
|
self.assertEqual("/paperless/dashboard", base_paths[3]) # LOGIN_REDIRECT_URL
|
||||||
|
self.assertEqual("/paperless/", base_paths[4]) # LOGOUT_REDIRECT_URL
|
||||||
|
|
||||||
|
@mock.patch(
|
||||||
|
"os.environ",
|
||||||
|
{
|
||||||
|
"PAPERLESS_FORCE_SCRIPT_NAME": "/paperless",
|
||||||
|
"PAPERLESS_LOGOUT_REDIRECT_URL": "/foobar/",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
def test_subpath_with_explicit_logout_url(self):
|
||||||
|
"""
|
||||||
|
GIVEN:
|
||||||
|
- PAPERLESS_FORCE_SCRIPT_NAME is set and so is PAPERLESS_LOGOUT_REDIRECT_URL
|
||||||
|
WHEN:
|
||||||
|
- Settings are parsed
|
||||||
|
THEN:
|
||||||
|
- The correct logout redirect URL is returned
|
||||||
|
"""
|
||||||
|
base_paths = _parse_base_paths()
|
||||||
|
self.assertEqual("/paperless/", base_paths[1]) # BASE_URL
|
||||||
|
self.assertEqual("/foobar/", base_paths[4]) # LOGOUT_REDIRECT_URL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user