mirror of https://github.com/zulip/zulip.git
Remove special flow for open realm sign-up when realms have subdomains.
Redirects /register/<domain> to /accounts/register when REALMS_HAVE_SUBDOMAINS.
This commit is contained in:
parent
b114690bd5
commit
1e6ae537bd
|
@ -1,10 +0,0 @@
|
||||||
{% extends "zerver/portico.html" %}
|
|
||||||
{% block portico_content %}
|
|
||||||
|
|
||||||
<h3>{{ _('Register through proper link') }}</h3>
|
|
||||||
|
|
||||||
<p>{{ _('Hi there! Thank you for your interest in Zulip.') }}</p>
|
|
||||||
|
|
||||||
<p>{% trans %}Please register using <a href='{{ link }}'>this link</a>.{% endtrans %}</p>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -626,7 +626,10 @@ class GoogleSubdomainLoginTest(GoogleOAuthTest):
|
||||||
def test_google_oauth2_registration(self):
|
def test_google_oauth2_registration(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
"""If the user doesn't exist yet, Google auth can be used to register an account"""
|
"""If the user doesn't exist yet, Google auth can be used to register an account"""
|
||||||
with self.settings(REALMS_HAVE_SUBDOMAINS=True):
|
with self.settings(REALMS_HAVE_SUBDOMAINS=True), \
|
||||||
|
mock.patch('zerver.views.auth.get_subdomain', return_value='zulip'), \
|
||||||
|
mock.patch('zerver.views.get_subdomain', return_value='zulip'):
|
||||||
|
|
||||||
email = "newuser@zulip.com"
|
email = "newuser@zulip.com"
|
||||||
token_response = ResponseMock(200, {'access_token': "unique_token"})
|
token_response = ResponseMock(200, {'access_token': "unique_token"})
|
||||||
account_data = dict(name=dict(formatted="Full Name"),
|
account_data = dict(name=dict(formatted="Full Name"),
|
||||||
|
@ -645,10 +648,7 @@ class GoogleSubdomainLoginTest(GoogleOAuthTest):
|
||||||
parsed_url.path)
|
parsed_url.path)
|
||||||
self.assertEquals(uri, 'http://zulip.testserver/accounts/login/subdomain/')
|
self.assertEquals(uri, 'http://zulip.testserver/accounts/login/subdomain/')
|
||||||
|
|
||||||
with mock.patch('zerver.views.auth.get_subdomain', return_value='zulip'), \
|
result = self.client_get(result.url)
|
||||||
mock.patch('zerver.views.get_subdomain', return_value='zulip'):
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
|
|
||||||
result = self.client_get(result.url) # Call the confirmation url.
|
result = self.client_get(result.url) # Call the confirmation url.
|
||||||
key_match = re.search('value="(?P<key>[0-9a-f]+)" name="key"', result.content.decode("utf-8"))
|
key_match = re.search('value="(?P<key>[0-9a-f]+)" name="key"', result.content.decode("utf-8"))
|
||||||
name_match = re.search('value="(?P<name>[^"]+)" name="full_name"', result.content.decode("utf-8"))
|
name_match = re.search('value="(?P<name>[^"]+)" name="full_name"', result.content.decode("utf-8"))
|
||||||
|
|
|
@ -764,53 +764,6 @@ class UserSignUpTest(ZulipTestCase):
|
||||||
from django.core.mail import outbox
|
from django.core.mail import outbox
|
||||||
outbox.pop()
|
outbox.pop()
|
||||||
|
|
||||||
def test_completely_open_domain_under_subdomains(self):
|
|
||||||
# type: () -> None
|
|
||||||
username = "user1"
|
|
||||||
password = "test"
|
|
||||||
domain = "zulip.com"
|
|
||||||
email = "user1@acme.com"
|
|
||||||
subdomain = "zulip"
|
|
||||||
realm_name = "Zulip"
|
|
||||||
|
|
||||||
realm = get_realm(domain)
|
|
||||||
realm.restricted_to_domain = False
|
|
||||||
realm.invite_required = False
|
|
||||||
realm.save()
|
|
||||||
|
|
||||||
with self.settings(REALMS_HAVE_SUBDOMAINS=True):
|
|
||||||
with patch('zerver.views.get_subdomain', return_value=subdomain):
|
|
||||||
result = self.client_post('/register/', {'email': email})
|
|
||||||
|
|
||||||
self.assertEquals(result.status_code, 302)
|
|
||||||
self.assertTrue(result["Location"].endswith(
|
|
||||||
"/accounts/send_confirm/%s" % (email,)))
|
|
||||||
result = self.client_get(result["Location"])
|
|
||||||
self.assert_in_response("Check your email so we can get started.", result)
|
|
||||||
# Visit the confirmation link.
|
|
||||||
from django.core.mail import outbox
|
|
||||||
for message in reversed(outbox):
|
|
||||||
if email in message.to:
|
|
||||||
confirmation_link_pattern = re.compile(settings.EXTERNAL_HOST + "(\S+)>")
|
|
||||||
confirmation_url = confirmation_link_pattern.search(
|
|
||||||
message.body).groups()[0]
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise ValueError("Couldn't find a confirmation email.")
|
|
||||||
|
|
||||||
result = self.client_get(confirmation_url)
|
|
||||||
self.assertEquals(result.status_code, 200)
|
|
||||||
|
|
||||||
result = self.submit_reg_form_for_user(username,
|
|
||||||
password,
|
|
||||||
domain='acme.com',
|
|
||||||
realm_name=realm_name,
|
|
||||||
realm_subdomain=subdomain,
|
|
||||||
# Pass HTTP_HOST for the target subdomain
|
|
||||||
HTTP_HOST=subdomain + ".testserver")
|
|
||||||
self.assertEquals(result.status_code, 200)
|
|
||||||
self.assertIn('Register through proper link', result.content.decode('utf8'))
|
|
||||||
|
|
||||||
def test_unique_completely_open_domain(self):
|
def test_unique_completely_open_domain(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
username = "user1"
|
username = "user1"
|
||||||
|
|
|
@ -123,22 +123,8 @@ def accounts_register(request):
|
||||||
realm = None
|
realm = None
|
||||||
domain = None
|
domain = None
|
||||||
elif settings.REALMS_HAVE_SUBDOMAINS:
|
elif settings.REALMS_HAVE_SUBDOMAINS:
|
||||||
subdomain_realm = get_realm_by_string_id(get_subdomain(request))
|
realm = get_realm_by_string_id(get_subdomain(request))
|
||||||
domain = resolve_email_to_domain(email)
|
domain = realm.domain
|
||||||
domain = subdomain_realm.domain if subdomain_realm else domain
|
|
||||||
if completely_open(domain):
|
|
||||||
# When subdomains are enabled and the user is registering into a
|
|
||||||
# completely open subdomain without going through the correct url
|
|
||||||
# for the completely open domains.
|
|
||||||
# NOTE: When the user comes through the correct url then
|
|
||||||
# `prereg_user.realm` will have the correct value and this branch
|
|
||||||
# will not run.
|
|
||||||
path = reverse('zerver.views.accounts_home_with_domain',
|
|
||||||
kwargs={'domain': subdomain_realm.domain})
|
|
||||||
ctx = {"link": "%s%s" % (subdomain_realm.uri, path)}
|
|
||||||
return render_to_response("zerver/completely_open_link.html", ctx)
|
|
||||||
else:
|
|
||||||
realm = get_realm(domain)
|
|
||||||
else:
|
else:
|
||||||
domain = resolve_email_to_domain(email)
|
domain = resolve_email_to_domain(email)
|
||||||
realm = get_realm(domain)
|
realm = get_realm(domain)
|
||||||
|
@ -350,7 +336,7 @@ def create_preregistration_user(email, request, realm_creation=False):
|
||||||
|
|
||||||
def accounts_home_with_domain(request, domain):
|
def accounts_home_with_domain(request, domain):
|
||||||
# type: (HttpRequest, str) -> HttpResponse
|
# type: (HttpRequest, str) -> HttpResponse
|
||||||
if completely_open(domain):
|
if not settings.REALMS_HAVE_SUBDOMAINS and completely_open(domain):
|
||||||
# You can sign up for a completely open realm through a
|
# You can sign up for a completely open realm through a
|
||||||
# special registration path that contains the domain in the
|
# special registration path that contains the domain in the
|
||||||
# URL. We store this information in the session rather than
|
# URL. We store this information in the session rather than
|
||||||
|
|
Loading…
Reference in New Issue