diff --git a/misago/auth/decorators.py b/misago/auth/decorators.py index df2846d1d2..0fadb5febe 100644 --- a/misago/auth/decorators.py +++ b/misago/auth/decorators.py @@ -26,12 +26,9 @@ def login_required_decorator(request, *args, **kwargs): ) if not request.user.is_authenticated: - if request.is_htmx: + if request.is_htmx or is_misago_login_page_disabled(): raise PermissionDenied(login_message) - if is_misago_login_page_disabled(): - pass - return login( request, message=login_message, diff --git a/misago/auth/tests/test_login_required_decorator.py b/misago/auth/tests/test_login_required_decorator.py index e69de29bb2..1b8cca26f0 100644 --- a/misago/auth/tests/test_login_required_decorator.py +++ b/misago/auth/tests/test_login_required_decorator.py @@ -0,0 +1,37 @@ +from django.test import override_settings +from django.urls import reverse + +from ...conf.test import override_dynamic_settings +from ...test import assert_contains, assert_not_contains + + +def test_require_login_decorator_displays_login_form_to_guests(db, client): + response = client.get(reverse("misago:account-preferences")) + assert_contains(response, "page-login") + assert_contains(response, "Sign in") + + +def test_require_login_decorator_displays_view_to_authenticated(user_client): + response = user_client.get(reverse("misago:account-preferences")) + assert_not_contains(response, "page-login") + + +@override_settings(LOGIN_URL="/other/login/") +def test_require_login_decorator_displays_permisison_denied_if_custom_login_page_is_enabled( + db, client +): + response = client.get(reverse("misago:account-preferences")) + assert response.status_code == 403 + + +@override_dynamic_settings( + enable_oauth2_client=True, + oauth2_provider="OAuth2", +) +def test_require_login_decorator_displays_delegated_login_form_if_auth_is_delegated( + db, client +): + response = client.get(reverse("misago:account-preferences")) + assert_contains(response, "page-login") + assert_contains(response, "Sign in") + assert_contains(response, "Sign in with OAuth2")