mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	[manual] Allow signups for emails held by non-MIT mirror dummy accounts.
Before this is deployed to prod, we need to manually frob our database to set the is_mirror_dummy=True bit for all existing mirror users. (imported from commit 39f1938cef091cf1d7d97307f76b137fe1d92b6c)
This commit is contained in:
		@@ -8,17 +8,10 @@ from django.conf import settings
 | 
			
		||||
 | 
			
		||||
from zerver.models import Realm, get_user_profile_by_email, UserProfile, \
 | 
			
		||||
    completely_open, resolve_email_to_domain, get_realm
 | 
			
		||||
from zerver.lib.actions import do_change_password
 | 
			
		||||
from zerver.lib.actions import do_change_password, is_inactive
 | 
			
		||||
from zproject.backends import password_auth_enabled
 | 
			
		||||
import DNS
 | 
			
		||||
 | 
			
		||||
def is_inactive(value):
 | 
			
		||||
    try:
 | 
			
		||||
        if get_user_profile_by_email(value).is_active:
 | 
			
		||||
            raise ValidationError(u'%s is already active' % value)
 | 
			
		||||
    except UserProfile.DoesNotExist:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
SIGNUP_STRING = '<a href="https://zulip.com/signup">Sign up</a> to find out when Zulip is ready for you.'
 | 
			
		||||
 | 
			
		||||
def has_valid_realm(value):
 | 
			
		||||
 
 | 
			
		||||
@@ -2210,6 +2210,13 @@ def handle_missedmessage_emails(user_profile_id, missed_email_events):
 | 
			
		||||
    if messages:
 | 
			
		||||
        do_send_missedmessage_events(user_profile, messages)
 | 
			
		||||
 | 
			
		||||
def is_inactive(value):
 | 
			
		||||
    try:
 | 
			
		||||
        if get_user_profile_by_email(value).is_active:
 | 
			
		||||
            raise ValidationError(u'%s is already active' % value)
 | 
			
		||||
    except UserProfile.DoesNotExist:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
def user_email_is_unique(value):
 | 
			
		||||
    try:
 | 
			
		||||
        get_user_profile_by_email(value)
 | 
			
		||||
@@ -2240,6 +2247,15 @@ def do_invite_users(user_profile, invitee_emails, streams):
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            existing_user_profile = get_user_profile_by_email(email)
 | 
			
		||||
        except UserProfile.DoesNotExist:
 | 
			
		||||
            existing_user_profile = None
 | 
			
		||||
        try:
 | 
			
		||||
            if existing_user_profile is not None and existing_user_profile.is_mirror_dummy:
 | 
			
		||||
                # Mirror dummy users to be activated must be inactive
 | 
			
		||||
                is_inactive(email)
 | 
			
		||||
            else:
 | 
			
		||||
                # Other users should not already exist at all.
 | 
			
		||||
                user_email_is_unique(email)
 | 
			
		||||
        except ValidationError:
 | 
			
		||||
            skipped.append((email, "Already has an account."))
 | 
			
		||||
 
 | 
			
		||||
@@ -218,6 +218,10 @@ def accounts_register(request):
 | 
			
		||||
    prereg_user = confirmation.content_object
 | 
			
		||||
    email = prereg_user.email
 | 
			
		||||
    mit_beta_user = isinstance(confirmation.content_object, MitUser)
 | 
			
		||||
    try:
 | 
			
		||||
        existing_user_profile = get_user_profile_by_email(email)
 | 
			
		||||
    except UserProfile.DoesNotExist:
 | 
			
		||||
        existing_user_profile = None
 | 
			
		||||
 | 
			
		||||
    validators.validate_email(email)
 | 
			
		||||
    # If someone invited you, you are joining their realm regardless
 | 
			
		||||
@@ -242,8 +246,8 @@ def accounts_register(request):
 | 
			
		||||
                                  {"deactivated_domain_name": realm.name})
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        if mit_beta_user:
 | 
			
		||||
            # MIT users already exist, but are supposed to be inactive.
 | 
			
		||||
        if existing_user_profile is not None and existing_user_profile.is_mirror_dummy:
 | 
			
		||||
            # Mirror dummy users to be activated must be inactive
 | 
			
		||||
            is_inactive(email)
 | 
			
		||||
        else:
 | 
			
		||||
            # Other users should not already exist at all.
 | 
			
		||||
@@ -313,9 +317,9 @@ def accounts_register(request):
 | 
			
		||||
        first_in_realm = len(UserProfile.objects.filter(realm=realm, is_bot=False)) == 0
 | 
			
		||||
 | 
			
		||||
        # FIXME: sanitize email addresses and fullname
 | 
			
		||||
        if mit_beta_user:
 | 
			
		||||
        if existing_user_profile is not None and existing_user_profile.is_mirror_dummy:
 | 
			
		||||
            try:
 | 
			
		||||
                user_profile = get_user_profile_by_email(email)
 | 
			
		||||
                user_profile = existing_user_profile
 | 
			
		||||
                do_activate_user(user_profile)
 | 
			
		||||
                do_change_password(user_profile, password)
 | 
			
		||||
                do_change_full_name(user_profile, full_name)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user