mirror of
https://github.com/zulip/zulip.git
synced 2026-07-09 21:21:47 +08:00
Add log/restore for fullnames and passwords.
(imported from commit 048ca3c86b9f077fcbccd5df4a509191a545da4c)
This commit is contained in:
parent
a798e14d86
commit
7c8bde5d90
@ -260,7 +260,7 @@ def restore_saved_messages():
|
||||
if message_type.startswith("subscription"):
|
||||
old_message["name"] = old_message["name"].lower()
|
||||
old_message["domain"] = old_message["domain"].lower()
|
||||
elif message_type == "user_activated":
|
||||
elif message_type.startswith("user_"):
|
||||
old_message["user"] = old_message["user"].lower()
|
||||
else:
|
||||
old_message["sender_email"] = old_message["sender_email"].lower()
|
||||
@ -278,7 +278,7 @@ def restore_saved_messages():
|
||||
if message_type.startswith("subscription"):
|
||||
stream_set.add((old_message["domain"], old_message["name"]))
|
||||
continue
|
||||
elif message_type == "user_activated":
|
||||
elif message_type.startswith("user_"):
|
||||
continue
|
||||
sender_email = old_message["sender_email"]
|
||||
domain = sender_email.split('@')[1]
|
||||
@ -377,7 +377,7 @@ def restore_saved_messages():
|
||||
messages_to_create = []
|
||||
for idx, old_message in enumerate(old_messages):
|
||||
if (old_message["type"].startswith("subscription") or
|
||||
old_message["type"] == "user_activated"):
|
||||
old_message["type"].startswith("user_")):
|
||||
continue
|
||||
|
||||
message = Message()
|
||||
@ -460,12 +460,24 @@ def restore_saved_messages():
|
||||
users[old_message["user"]].id)] = False
|
||||
continue
|
||||
elif old_message["type"] == "user_activated":
|
||||
# Just handle these the slow way
|
||||
# These are rare, so just handle them the slow way
|
||||
user = User.objects.get(email=old_message["user"])
|
||||
do_activate_user(user, log=False)
|
||||
# Update the cache of users to show this user as activated
|
||||
users_by_id[user.userprofile.id] = UserProfile.objects.get(user=user)
|
||||
continue
|
||||
elif old_message["type"] == "user_change_password":
|
||||
# Just handle these the slow way
|
||||
user = User.objects.get(email=old_message["user"])
|
||||
user.password = old_message["pwhash"]
|
||||
user.save()
|
||||
continue
|
||||
elif old_message["type"] == "user_change_full_name":
|
||||
# Just handle these the slow way
|
||||
user_profile = UserProfile.objects.get(user__email=old_message["user"])
|
||||
user_profile.full_name = old_message["full_name"]
|
||||
user_profile.save()
|
||||
continue
|
||||
|
||||
message = messages_by_id[current_message_id]
|
||||
current_message_id += 1
|
||||
|
||||
@ -522,6 +522,22 @@ def do_activate_user(user, log=True):
|
||||
log_event({'type': 'user_activated',
|
||||
'user': user.email})
|
||||
|
||||
def do_change_password(user, password, log=True):
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
if log:
|
||||
log_event({'type': 'user_change_password',
|
||||
'user': user.email,
|
||||
'pwhash': user.password})
|
||||
|
||||
def do_change_full_name(user_profile, full_name, log=True):
|
||||
user_profile.full_name = full_name
|
||||
user_profile.save()
|
||||
if log:
|
||||
log_event({'type': 'user_change_full_name',
|
||||
'user': user_profile.user.email,
|
||||
'full_name': full_name})
|
||||
|
||||
class Huddle(models.Model):
|
||||
# TODO: We should consider whether using
|
||||
# CommaSeparatedIntegerField would be better.
|
||||
|
||||
@ -10,7 +10,8 @@ from django.core.exceptions import ValidationError
|
||||
from django.contrib.auth.views import login as django_login_page
|
||||
from zephyr.models import Message, UserProfile, Stream, Subscription, \
|
||||
Recipient, get_display_recipient, get_huddle, Realm, UserMessage, \
|
||||
do_add_subscription, do_remove_subscription, \
|
||||
do_add_subscription, do_remove_subscription, do_change_password, \
|
||||
do_change_full_name, \
|
||||
create_user, do_send_message, create_user_if_needed, \
|
||||
create_stream_if_needed, PreregistrationUser, get_client
|
||||
from zephyr.forms import RegistrationForm, HomepageForm, is_unique
|
||||
@ -766,16 +767,13 @@ def json_change_settings(request):
|
||||
return json_error("New password must match confirmation password!")
|
||||
if not authenticate(username=user_profile.user.email, password=old_password):
|
||||
return json_error("Wrong password!")
|
||||
user_profile.user.set_password(new_password)
|
||||
do_change_password(user_profile.user, new_password)
|
||||
|
||||
result = {}
|
||||
if user_profile.full_name != full_name:
|
||||
user_profile.full_name = full_name
|
||||
do_change_full_name(user_profile, full_name)
|
||||
result['full_name'] = full_name
|
||||
|
||||
user_profile.user.save()
|
||||
user_profile.save()
|
||||
|
||||
return json_success(result)
|
||||
|
||||
@login_required_json_view
|
||||
|
||||
Loading…
Reference in New Issue
Block a user