From b4b14c4d95428e39937765121df30fa057fc023f Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 21 Dec 2022 17:52:53 +0100 Subject: [PATCH] FIX: allows an admin to access users preferences (#19559) --- .../user-preferences-nav/preferences-chat-link.hbs | 2 +- .../discourse/routes/preferences-chat.js | 2 +- .../chat/spec/system/user_chat_preferences_spec.rb | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/preferences-chat-link.hbs b/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/preferences-chat-link.hbs index 954bade2659..a2df70a7e01 100644 --- a/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/preferences-chat-link.hbs +++ b/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/preferences-chat-link.hbs @@ -1,4 +1,4 @@ -{{#if this.model.can_chat}} +{{#if (or this.model.can_chat this.model.admin)}} {{i18n "chat.title_capitalized"}} diff --git a/plugins/chat/assets/javascripts/discourse/routes/preferences-chat.js b/plugins/chat/assets/javascripts/discourse/routes/preferences-chat.js index 31e92c27fc6..06985980aaf 100644 --- a/plugins/chat/assets/javascripts/discourse/routes/preferences-chat.js +++ b/plugins/chat/assets/javascripts/discourse/routes/preferences-chat.js @@ -8,7 +8,7 @@ export default class PreferencesChatRoute extends RestrictedUserRoute { showFooter = true; setupController(controller, user) { - if (!user?.can_chat) { + if (!user?.can_chat && !user.admin) { return this.transitionTo(`discovery.${defaultHomepage()}`); } controller.set("model", user); diff --git a/plugins/chat/spec/system/user_chat_preferences_spec.rb b/plugins/chat/spec/system/user_chat_preferences_spec.rb index 51e5d217d8c..6543f24057c 100644 --- a/plugins/chat/spec/system/user_chat_preferences_spec.rb +++ b/plugins/chat/spec/system/user_chat_preferences_spec.rb @@ -31,4 +31,18 @@ RSpec.describe "User chat preferences", type: :system, js: true do expect(page).to have_css("#user_chat_sounds .select-kit-header[data-value='bell']") end + + context "as an admin on another user's preferences" do + fab!(:current_user) { Fabricate(:admin) } + fab!(:user_1) { Fabricate(:admin) } + + before { sign_in(current_user) } + + it "allows to change settings" do + visit("/u/#{user_1.username}/preferences") + find(".preferences-chat-link").click + + expect(page).to have_current_path("/u/#{user_1.username}/preferences/chat") + end + end end