mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 18:36:36 +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, \
|
from zerver.models import Realm, get_user_profile_by_email, UserProfile, \
|
||||||
completely_open, resolve_email_to_domain, get_realm
|
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
|
from zproject.backends import password_auth_enabled
|
||||||
import DNS
|
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.'
|
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):
|
def has_valid_realm(value):
|
||||||
|
|||||||
@@ -2210,6 +2210,13 @@ def handle_missedmessage_emails(user_profile_id, missed_email_events):
|
|||||||
if messages:
|
if messages:
|
||||||
do_send_missedmessage_events(user_profile, 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):
|
def user_email_is_unique(value):
|
||||||
try:
|
try:
|
||||||
get_user_profile_by_email(value)
|
get_user_profile_by_email(value)
|
||||||
@@ -2240,6 +2247,15 @@ def do_invite_users(user_profile, invitee_emails, streams):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
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)
|
user_email_is_unique(email)
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
skipped.append((email, "Already has an account."))
|
skipped.append((email, "Already has an account."))
|
||||||
|
|||||||
@@ -218,6 +218,10 @@ def accounts_register(request):
|
|||||||
prereg_user = confirmation.content_object
|
prereg_user = confirmation.content_object
|
||||||
email = prereg_user.email
|
email = prereg_user.email
|
||||||
mit_beta_user = isinstance(confirmation.content_object, MitUser)
|
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)
|
validators.validate_email(email)
|
||||||
# If someone invited you, you are joining their realm regardless
|
# If someone invited you, you are joining their realm regardless
|
||||||
@@ -242,8 +246,8 @@ def accounts_register(request):
|
|||||||
{"deactivated_domain_name": realm.name})
|
{"deactivated_domain_name": realm.name})
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if mit_beta_user:
|
if existing_user_profile is not None and existing_user_profile.is_mirror_dummy:
|
||||||
# MIT users already exist, but are supposed to be inactive.
|
# Mirror dummy users to be activated must be inactive
|
||||||
is_inactive(email)
|
is_inactive(email)
|
||||||
else:
|
else:
|
||||||
# Other users should not already exist at all.
|
# 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
|
first_in_realm = len(UserProfile.objects.filter(realm=realm, is_bot=False)) == 0
|
||||||
|
|
||||||
# FIXME: sanitize email addresses and fullname
|
# 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:
|
try:
|
||||||
user_profile = get_user_profile_by_email(email)
|
user_profile = existing_user_profile
|
||||||
do_activate_user(user_profile)
|
do_activate_user(user_profile)
|
||||||
do_change_password(user_profile, password)
|
do_change_password(user_profile, password)
|
||||||
do_change_full_name(user_profile, full_name)
|
do_change_full_name(user_profile, full_name)
|
||||||
|
|||||||
Reference in New Issue
Block a user