diff --git a/static/js/settings_bots.js b/static/js/settings_bots.js index e3591b2ffa..9921c0d32f 100644 --- a/static/js/settings_bots.js +++ b/static/js/settings_bots.js @@ -324,10 +324,10 @@ exports.set_up = function () { }); $("#inactive_bots_list").on("click", "button.reactivate_bot", function (e) { - var email = $(e.currentTarget).data('email'); + var user_id = $(e.currentTarget).attr('data-user-id'); channel.post({ - url: '/json/users/' + encodeURIComponent(email) + "/reactivate", + url: '/json/users/' + encodeURIComponent(user_id) + "/reactivate", error: function (xhr) { $('#bot_delete_error').text(JSON.parse(xhr.responseText).msg).show(); }, diff --git a/static/js/settings_users.js b/static/js/settings_users.js index 0f03388c43..79c72131d5 100644 --- a/static/js/settings_users.js +++ b/static/js/settings_users.js @@ -300,10 +300,10 @@ exports.on_load_success = function (realm_people_data) { // Go up the tree until we find the user row, then grab the email element var row = $(e.target).closest(".user_row"); - var email = get_email_for_user_row(row); + var user_id = row.attr("data-user-id"); channel.post({ - url: '/json/users/' + encodeURIComponent(email) + "/reactivate", + url: '/json/users/' + encodeURIComponent(user_id) + "/reactivate", error: function (xhr) { ui_report.generic_row_button_error(xhr, $(e.target)); }, diff --git a/zerver/tests/test_users.py b/zerver/tests/test_users.py index 96acc16d4e..013502d9ca 100644 --- a/zerver/tests/test_users.py +++ b/zerver/tests/test_users.py @@ -350,7 +350,7 @@ class ActivateTest(ZulipTestCase): user = self.example_user('hamlet') self.assertFalse(user.is_active) - result = self.client_post('/json/users/hamlet@zulip.com/reactivate') + result = self.client_post('/json/users/{}/reactivate'.format(user.id)) self.assert_json_success(result) user = self.example_user('hamlet') self.assertTrue(user.is_active) @@ -379,7 +379,8 @@ class ActivateTest(ZulipTestCase): self.assert_json_error(result, 'Cannot deactivate the only organization administrator') # Cannot reactivate a nonexistent user. - result = self.client_post('/json/users/nonexistent@zulip.com/reactivate') + invalid_user_id = 1000 + result = self.client_post('/json/users/{}/reactivate'.format(invalid_user_id)) self.assert_json_error(result, 'No such user') def test_api_with_insufficient_permissions(self) -> None: @@ -392,7 +393,7 @@ class ActivateTest(ZulipTestCase): self.assert_json_error(result, 'Insufficient permission') # Cannot reactivate a user - result = self.client_post('/json/users/hamlet@zulip.com/reactivate') + result = self.client_post('/json/users/{}/reactivate'.format(self.example_user("hamlet").id)) self.assert_json_error(result, 'Insufficient permission') def test_clear_scheduled_jobs(self) -> None: diff --git a/zerver/views/users.py b/zerver/views/users.py index 2a04384f82..f1d740bf54 100644 --- a/zerver/views/users.py +++ b/zerver/views/users.py @@ -79,9 +79,9 @@ def _deactivate_user_profile_backend(request: HttpRequest, user_profile: UserPro return json_success() def reactivate_user_backend(request: HttpRequest, user_profile: UserProfile, - email: str) -> HttpResponse: + user_id: int) -> HttpResponse: try: - target = get_user(email, user_profile.realm) + target = get_user_profile_by_id_in_realm(user_id, user_profile.realm) except UserProfile.DoesNotExist: return json_error(_('No such user')) diff --git a/zproject/urls.py b/zproject/urls.py index c8b81ad621..cf311b3f4a 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -126,7 +126,7 @@ v1_api_and_json_patterns = [ url(r'^users$', rest_dispatch, {'GET': 'zerver.views.users.get_members_backend', 'POST': 'zerver.views.users.create_user_backend'}), - url(r'^users/(?!me/)(?P[^/]*)/reactivate$', rest_dispatch, + url(r'^users/(?P[0-9]+)/reactivate$', rest_dispatch, {'POST': 'zerver.views.users.reactivate_user_backend'}), url(r'^users/(?!me/)(?P[^/]*)/presence$', rest_dispatch, {'GET': 'zerver.views.presence.get_presence_backend'}),