From 5494c167fcef26759a33c4a7cc912c02663aa160 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 17 May 2024 17:04:08 +0100 Subject: [PATCH] Show lock on deploy if user is read-only --- .../editor-client/src/js/ui/deploy.js | 21 ++++++++++++++++++- .../editor-client/src/sass/header.scss | 14 +++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js b/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js index 6765ddc63..90857e865 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js @@ -63,7 +63,7 @@ RED.deploy = (function() { ''+ ''+ ''+ - ''+ + ''+ '').prependTo(".red-ui-header-toolbar"); const mainMenuItems = [ {id:"deploymenu-item-full",toggle:"deploy-type",icon:"red/images/deploy-full.svg",label:RED._("deploy.full"),sublabel:RED._("deploy.fullDesc"),selected: true, onselect:function(s) { if(s){changeDeploymentType("full")}}}, @@ -124,6 +124,9 @@ RED.deploy = (function() { }) RED.events.on('workspace:dirty',function(state) { + if (RED.settings.user?.permissions === 'read') { + return + } if (state.dirty) { // window.onbeforeunload = function() { // return @@ -169,6 +172,22 @@ RED.deploy = (function() { activeBackgroundDeployNotification.update(message, options) } }); + + + updateLockedState() + RED.events.on('login', updateLockedState) + } + + function updateLockedState() { + if (RED.settings.user?.permissions === 'read') { + $(".red-ui-deploy-button-group").addClass("readOnly"); + $("#red-ui-header-button-deploy").addClass("disabled"); + } else { + $(".red-ui-deploy-button-group").removeClass("readOnly"); + if (RED.nodes.dirty()) { + $("#red-ui-header-button-deploy").removeClass("disabled"); + } + } } function getNodeInfo(node) { diff --git a/packages/node_modules/@node-red/editor-client/src/sass/header.scss b/packages/node_modules/@node-red/editor-client/src/sass/header.scss index b8db40f81..550310205 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/header.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/header.scss @@ -186,6 +186,20 @@ } } + .red-ui-deploy-button-group.readOnly { + .fa-caret-down { display: none; } + .fa-lock { display: inline-block; } + } + .red-ui-deploy-button-group:not(.readOnly) { + .fa-caret-down { display: inline-block; } + .fa-lock { display: none; } + } + .red-ui-deploy-button-group.readOnly { + a { + pointer-events: none; + } + } + li.open .button { background: var(--red-ui-header-button-background-active); border-color: var(--red-ui-header-button-background-active);