mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	This adds support for running a Zulip production server with each realm on its own unique subdomain, e.g. https://realm_name.example.com. This patch includes a ton of important features: * Configuring the Zulip sesion middleware to issue cookier correctly for the subdomains case. * Throwing an error if the user tries to visit an invalid subdomain. * Runs a portion of the Casper tests with REALMS_HAVE_SUBDOMAINS enabled to test the subdomain signup process. * Updating our integrations documentation to refer to the current subdomain. * Enforces that users can only login to the subdomain of their realm (but does not restrict the API; that will be tightened in a future commit). Note that toggling settings.REALMS_HAVE_SUBDOMAINS on a live server is not supported without manual intervention (the main problem will be adding "subdomain" values for all the existing realms). [substantially modified by tabbott as part of merging]
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# -*- coding: utf-8 -*-
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
from django.db import models, migrations
 | 
						|
from django.db.backends.postgresql_psycopg2.schema import DatabaseSchemaEditor
 | 
						|
from django.db.migrations.state import StateApps
 | 
						|
from django.conf import settings
 | 
						|
from django.core.exceptions import ObjectDoesNotExist
 | 
						|
 | 
						|
def set_subdomain_of_default_realm(apps, schema_editor):
 | 
						|
    # type: (StateApps, DatabaseSchemaEditor) -> None
 | 
						|
    if settings.DEVELOPMENT:
 | 
						|
        Realm = apps.get_model('zerver', 'Realm')
 | 
						|
        try:
 | 
						|
            default_realm = Realm.objects.get(domain="zulip.com")
 | 
						|
        except ObjectDoesNotExist:
 | 
						|
            default_realm = None
 | 
						|
 | 
						|
        if default_realm is not None:
 | 
						|
            default_realm.subdomain = "zulip"
 | 
						|
            default_realm.save()
 | 
						|
 | 
						|
class Migration(migrations.Migration):
 | 
						|
 | 
						|
    dependencies = [
 | 
						|
        ('zerver', '0028_userprofile_tos_version'),
 | 
						|
    ]
 | 
						|
 | 
						|
    operations = [
 | 
						|
        migrations.AddField(
 | 
						|
            model_name='realm',
 | 
						|
            name='subdomain',
 | 
						|
            field=models.CharField(max_length=40, unique=True, null=True),
 | 
						|
        ),
 | 
						|
        migrations.RunPython(set_subdomain_of_default_realm)
 | 
						|
    ]
 |