From 02fda919a5bb904c312fb2236e270e2c106a2237 Mon Sep 17 00:00:00 2001 From: Marcial Rosales Date: Tue, 23 May 2023 16:44:44 +0200 Subject: [PATCH] Fix #8276 --- .../rabbitmq_management/priv/www/js/global.js | 64 ++++++++++++------- deps/rabbitmq_management/priv/www/js/main.js | 4 +- .../priv/www/js/tmpl/queues.ejs | 2 +- 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/deps/rabbitmq_management/priv/www/js/global.js b/deps/rabbitmq_management/priv/www/js/global.js index 4b200217f5..b273f2ae42 100644 --- a/deps/rabbitmq_management/priv/www/js/global.js +++ b/deps/rabbitmq_management/priv/www/js/global.js @@ -640,8 +640,8 @@ var exchange_types; // Used for access control var user_tags; var user; -var ac; -var display; +var ac = new AccessControl(); +var display = new DisplayControl(); var ui_data_model = { vhosts: [], @@ -651,42 +651,60 @@ var ui_data_model = { // Access control -function AccessControl(user, ui_data_model) { - this.user = user; - this.user_tags = expand_user_tags(user.tags); - this.ui_data_model = ui_data_model; +function AccessControl() { + this.update = function(user, ui_data_model) { + this.user = user; + this.user_tags = expand_user_tags(user.tags); + this.ui_data_model = ui_data_model; + }; this.isMonitoringUser = function() { - return this.user_tags.includes("monitoring"); + if (this.user_tags) + return this.user_tags.includes("monitoring"); + else return false; }; this.isAdministratorUser = function() { - return this.user_tags.includes("administrator"); + if (this.user_tags) + return this.user_tags.includes("administrator"); + else return false; }; this.isPolicyMakerUser = function() { - return this.user_tags.includes("policymaker"); + if (this.user_tags) + return this.user_tags.includes("policymaker"); + else return false; }; this.canAccessVhosts = function() { - return this.ui_data_model.vhosts.length > 0; + if (this.ui_data_model) + return this.ui_data_model.vhosts.length > 0; + else return false; }; this.canListNodes = function() { - return this.isMonitoringUser() && this.ui_data_model.nodes.length > 1; + if (this.ui_data_model) + return this.isMonitoringUser() && this.ui_data_model.nodes.length > 1; + else return false; }; }; -function DisplayControl(overview, ui_data_model) { - this.nodes = ac.canListNodes() && ui_data_model.nodes.length > 1; - this.vhosts = ac.canAccessVhosts(); - this.rabbitmqVersions = false; - var v = ''; - for (var i = 0; i < ui_data_model.nodes.length; i++) { - var v1 = fmt_rabbit_version(ui_data_model.nodes[i].applications); - if (v1 != 'unknown') { - if (v != '' && v != v1) this.rabbitmqVersions = true; - v = v1; - } +function DisplayControl() { + this.nodes = false + this.vhosts = false + this.rabbitmqVersions = false + + this.update = function(overview, ui_data_model) { + this.nodes = ac.canListNodes() && ui_data_model.nodes.length > 1 + this.vhosts = ac.canAccessVhosts() + this.rabbitmqVersions = false + var v = ''; + for (var i = 0; i < ui_data_model.nodes.length; i++) { + var v1 = fmt_rabbit_version(ui_data_model.nodes[i].applications); + if (v1 != 'unknown') { + if (v != '' && v != v1) this.rabbitmqVersions = true; + v = v1; + } + } + this.data = ui_data_model; } - this.data = ui_data_model; } diff --git a/deps/rabbitmq_management/priv/www/js/main.js b/deps/rabbitmq_management/priv/www/js/main.js index e52a376eba..41db487d8e 100644 --- a/deps/rabbitmq_management/priv/www/js/main.js +++ b/deps/rabbitmq_management/priv/www/js/main.js @@ -113,13 +113,13 @@ function check_login () { } ui_data_model.vhosts = JSON.parse(sync_get('/vhosts')); - ac = new AccessControl(user, ui_data_model) + ac.update(user, ui_data_model) if (ac.isMonitoringUser()) { ui_data_model.nodes = JSON.parse(sync_get('/nodes')) } var overview = JSON.parse(sync_get('/overview')) - display = new DisplayControl(overview, ui_data_model) + display.update(overview, ui_data_model) setup_global_vars(overview) diff --git a/deps/rabbitmq_management/priv/www/js/tmpl/queues.ejs b/deps/rabbitmq_management/priv/www/js/tmpl/queues.ejs index d20afbfd19..6d784ad8d8 100644 --- a/deps/rabbitmq_management/priv/www/js/tmpl/queues.ejs +++ b/deps/rabbitmq_management/priv/www/js/tmpl/queues.ejs @@ -8,7 +8,7 @@ - <%= group_heading('queues', 'Overview', [vhosts_interesting, nodes_interesting, true]) %> + <%= group_heading('queues', 'Overview', [display.vhosts, display.nodes, true]) %> <% if(disable_stats && enable_queue_totals) { %> <%= group_heading('queues', 'Messages', []) %> <% } else { %>