diff --git a/swh/web/templates/layout.html b/swh/web/templates/layout.html --- a/swh/web/templates/layout.html +++ b/swh/web/templates/layout.html @@ -129,6 +129,12 @@ {% else %} <a href="{% url 'oidc-login' %}">login</a> {% endif %} + {% else %} + {% if request.path != logout_url %} + <a href="{% url 'login' %}?next={{ request.build_absolute_uri }}">login</a> + {% else %} + <a href="{% url 'login' %}">login</a> + {% endif %} {% endif %} </li> </ul> diff --git a/swh/web/tests/test_templates.py b/swh/web/tests/test_templates.py --- a/swh/web/tests/test_templates.py +++ b/swh/web/tests/test_templates.py @@ -6,7 +6,7 @@ import random from swh.web.common.utils import reverse -from swh.web.config import STAGING_SERVER_NAMES +from swh.web.config import STAGING_SERVER_NAMES, get_config from swh.web.tests.django_asserts import assert_contains, assert_not_contains from swh.web.tests.utils import check_http_get_response @@ -23,3 +23,20 @@ client, url, status_code=200, server_name=random.choice(STAGING_SERVER_NAMES), ) assert_contains(resp, "swh-corner-ribbon") + + +def test_layout_with_oidc_auth_enabled(client): + url = reverse("swh-web-homepage") + resp = check_http_get_response(client, url, status_code=200) + assert_contains(resp, reverse("oidc-login")) + + +def test_layout_without_oidc_auth_enabled(client, mocker): + config = get_config() + config["keycloak"]["server_url"] = "" + mock_get_config = mocker.patch("swh.web.common.utils.get_config") + mock_get_config.return_value = config + + url = reverse("swh-web-homepage") + resp = check_http_get_response(client, url, status_code=200) + assert_contains(resp, reverse("login"))