diff --git a/app/assets/javascripts/discourse/app/initializers/logout.js b/app/assets/javascripts/discourse/app/initializers/logout.js index 91e0808509d..c329ff9f612 100644 --- a/app/assets/javascripts/discourse/app/initializers/logout.js +++ b/app/assets/javascripts/discourse/app/initializers/logout.js @@ -12,12 +12,23 @@ export default { initialize(container) { this.messageBus = container.lookup("service:message-bus"); this.dialog = container.lookup("service:dialog"); + this.currentUser = container.lookup("service:current-user"); - this.messageBus.subscribe("/logout", this.onMessage); + if (this.currentUser) { + this.messageBus.subscribe( + `/logout/${this.currentUser.id}`, + this.onMessage + ); + } }, teardown() { - this.messageBus.unsubscribe("/logout", this.onMessage); + if (this.currentUser) { + this.messageBus.unsubscribe( + `/logout/${this.currentUser.id}`, + this.onMessage + ); + } }, @bind diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-test.js index e8ce1fad39b..4e143fe3f08 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/user-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/user-test.js @@ -335,7 +335,7 @@ acceptance("User - Logout", function (needs) { test("Dialog works", async function (assert) { sinon.stub(logout, "default"); await visit("/u/eviltrout"); - await publishToMessageBus("/logout"); + await publishToMessageBus("/logout/19"); assert.ok(exists(".dialog-body")); assert.ok( diff --git a/app/models/user.rb b/app/models/user.rb index db81134eeaa..54d358ec737 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1497,7 +1497,7 @@ class User < ActiveRecord::Base end def logged_out - MessageBus.publish "/logout", self.id, user_ids: [self.id] + MessageBus.publish "/logout/#{self.id}", self.id, user_ids: [self.id] DiscourseEvent.trigger(:user_logged_out, self) end diff --git a/app/services/user_destroyer.rb b/app/services/user_destroyer.rb index 7458e9dc538..ed91b77422a 100644 --- a/app/services/user_destroyer.rb +++ b/app/services/user_destroyer.rb @@ -103,7 +103,7 @@ class UserDestroyer StaffActionLogger.new(deleted_by).log_user_deletion(user, opts.slice(:context)) Rails.logger.warn("User destroyed without context from: #{caller_locations(14, 1)[0]}") if opts.slice(:context).blank? end - MessageBus.publish "/logout", result.id, user_ids: [result.id] + MessageBus.publish "/logout/#{result.id}", result.id, user_ids: [result.id] end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index bba50c396e7..f017c73c70e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2020,7 +2020,7 @@ RSpec.describe User do fab!(:user) { Fabricate(:user) } it 'should publish the right message' do - message = MessageBus.track_publish('/logout') { user.logged_out }.first + message = MessageBus.track_publish("/logout/#{user.id}") { user.logged_out }.first expect(message.data).to eq(user.id) end