mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
auth: Redirect the new subdomain for deactivate realms.
For realms whose subdomain has changed, we redirect the user to the new realm with the same URL structure with just the subdomain changed.
This commit is contained in:
@@ -185,20 +185,14 @@ class DeactivationNoticeTestCase(ZulipTestCase):
|
|||||||
realm.save(update_fields=["deactivated", "deactivated_redirect"])
|
realm.save(update_fields=["deactivated", "deactivated_redirect"])
|
||||||
|
|
||||||
result = self.client_get("/login/", follow=True)
|
result = self.client_get("/login/", follow=True)
|
||||||
self.assertIn(
|
self.assertIn(result.request.get("SERVER_NAME"), ["example.zulipchat.com"])
|
||||||
'This organization has moved to <a href="http://example.zulipchat.com">http://example.zulipchat.com</a>.',
|
|
||||||
result.content.decode(),
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_deactivation_notice_when_realm_subdomain_is_changed(self) -> None:
|
def test_deactivation_notice_when_realm_subdomain_is_changed(self) -> None:
|
||||||
realm = get_realm("zulip")
|
realm = get_realm("zulip")
|
||||||
do_change_realm_subdomain(realm, "new-subdomain-name", acting_user=None)
|
do_change_realm_subdomain(realm, "new-subdomain-name", acting_user=None)
|
||||||
|
|
||||||
result = self.client_get("/login/", follow=True)
|
result = self.client_get("/login/", follow=True)
|
||||||
self.assertIn(
|
self.assertIn(result.request.get("SERVER_NAME"), ["new-subdomain-name.testserver"])
|
||||||
'This organization has moved to <a href="http://new-subdomain-name.testserver">http://new-subdomain-name.testserver</a>.',
|
|
||||||
result.content.decode(),
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_no_deactivation_notice_with_no_redirect(self) -> None:
|
def test_no_deactivation_notice_with_no_redirect(self) -> None:
|
||||||
realm = get_realm("zulip")
|
realm = get_realm("zulip")
|
||||||
@@ -220,18 +214,12 @@ class DeactivationNoticeTestCase(ZulipTestCase):
|
|||||||
do_change_realm_subdomain(realm, "new-name-1", acting_user=None)
|
do_change_realm_subdomain(realm, "new-name-1", acting_user=None)
|
||||||
|
|
||||||
result = self.client_get("/login/", follow=True)
|
result = self.client_get("/login/", follow=True)
|
||||||
self.assertIn(
|
self.assertIn(result.request.get("SERVER_NAME"), ["new-name-1.testserver"])
|
||||||
'This organization has moved to <a href="http://new-name-1.testserver">http://new-name-1.testserver</a>.',
|
|
||||||
result.content.decode(),
|
|
||||||
)
|
|
||||||
|
|
||||||
realm = get_realm("new-name-1")
|
realm = get_realm("new-name-1")
|
||||||
do_change_realm_subdomain(realm, "new-name-2", acting_user=None)
|
do_change_realm_subdomain(realm, "new-name-2", acting_user=None)
|
||||||
result = self.client_get("/login/", follow=True)
|
result = self.client_get("/login/", follow=True)
|
||||||
self.assertIn(
|
self.assertIn(result.request.get("SERVER_NAME"), ["new-name-2.testserver"])
|
||||||
'This organization has moved to <a href="http://new-name-2.testserver">http://new-name-2.testserver</a>.',
|
|
||||||
result.content.decode(),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class AddNewUserHistoryTest(ZulipTestCase):
|
class AddNewUserHistoryTest(ZulipTestCase):
|
||||||
|
@@ -803,12 +803,15 @@ def redirect_to_misconfigured_ldap_notice(request: HttpRequest, error_type: int)
|
|||||||
raise AssertionError("Invalid error type")
|
raise AssertionError("Invalid error type")
|
||||||
|
|
||||||
|
|
||||||
def show_deactivation_notice(request: HttpRequest) -> HttpResponse:
|
def show_deactivation_notice(request: HttpRequest, next: str = "/") -> HttpResponse:
|
||||||
realm = get_realm_from_request(request)
|
realm = get_realm_from_request(request)
|
||||||
if realm and realm.deactivated:
|
if realm and realm.deactivated:
|
||||||
context = {"deactivated_domain_name": realm.name}
|
context = {"deactivated_domain_name": realm.name}
|
||||||
if realm.deactivated_redirect is not None:
|
if realm.deactivated_redirect is not None:
|
||||||
context["deactivated_redirect"] = realm.deactivated_redirect
|
# URL hash is automatically preserved by the browser.
|
||||||
|
# See https://stackoverflow.com/a/5283739
|
||||||
|
redirect_to = get_safe_redirect_to(next, realm.deactivated_redirect)
|
||||||
|
return HttpResponseRedirect(redirect_to)
|
||||||
return render(request, "zerver/deactivated.html", context=context)
|
return render(request, "zerver/deactivated.html", context=context)
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse("login_page"))
|
return HttpResponseRedirect(reverse("login_page"))
|
||||||
@@ -919,6 +922,8 @@ def login_page(
|
|||||||
|
|
||||||
realm = get_realm_from_request(request)
|
realm = get_realm_from_request(request)
|
||||||
if realm and realm.deactivated:
|
if realm and realm.deactivated:
|
||||||
|
if realm.deactivated_redirect:
|
||||||
|
return show_deactivation_notice(request, next)
|
||||||
return redirect_to_deactivation_notice()
|
return redirect_to_deactivation_notice()
|
||||||
|
|
||||||
extra_context = kwargs.pop("extra_context", {})
|
extra_context = kwargs.pop("extra_context", {})
|
||||||
|
Reference in New Issue
Block a user