Access control improvements on mobile app.

Ylian Saint-Hilaire committed Apr 17, 2020 at 15:22 UTC ce39ab8691bfb2cb424b7c5dc85914fea440074c
3 files changed +8 -4
meshuser.js
+1
@@ -45,6 +45,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
45 const MESHRIGHT_LIMITEVENTS = 8192;
46 const MESHRIGHT_CHATNOTIFY = 16384;
47 const MESHRIGHT_UNINSTALL = 32768;
48 + const MESHRIGHT_NODESKTOP = 65536;
49
50 // Site rights
51 const SITERIGHT_SERVERBACKUP = 1; // 0x00000001
views/default-mobile.handlebars
+6 -3
@@ -815,10 +815,10 @@
815 }
816
817 // If we are currently looking at a node this is now gone, change the view.
818 - //if ((currentNode != null) && (getNodeFromId(currentNode._id) == null)) { currentNode = null; go(1); }
818 + if ((currentNode != null) && (IsNodeViewable(currentNode) == false)) { currentNode = null; go(2); }
819
820 // Change the reference to the current node
821 - if (currentNode != null) { currentNode = getNodeFromId(currentNode._id); }
821 + if (currentNode != null) { currentNode = getNodeFromId(currentNode._id); if (currentNode != null) { gotoDevice(currentNode._id, xxcurrentView, true); } else { go(2); } }
822
823 //onSortSelectChange();
824 //onSearchInputChanged();
@@ -2103,6 +2103,7 @@
2103 meshserver.send({ action: 'toast', nodeids: [currentNode._id], title: 'MeshCentral', msg: Q('d2devToast').value });
2104 }
2105
2106 + // && ((meshrights == 0xFFFFFFFF) || ((meshrights & 65536) == 0))
2107 function setupDeviceMenu(op, obj) {
2108 var meshrights = GetNodeRights(currentNode);
2109 if (op != null) { currentDevicePanel = op; }
@@ -2111,11 +2112,13 @@
2112 QV('p10files', currentDevicePanel == 2);
2113 var menus = [];
2114 if (currentDevicePanel != 0) { menus.push({ n: 'General', f: 'setupDeviceMenu(0)' }); }
2115 +
2116 if ((currentDevicePanel != 1) &&
2117 (currentNode != null) &&
2116 - ((meshrights & 8) || (meshrights & 256)) &&
2118 + ((meshrights & 8) || (meshrights & 256)) && ((meshrights == 0xFFFFFFFF) || ((meshrights & 65536) == 0)) &&
2119 (((currentNode.agent == null) && ((typeof currentNode.intelamt.sku !== 'number') || ((currentNode.intelamt.sku & 8) != 0))) || (currentNode.agent && (currentNode.agent.caps & 1)))
2120 ) { menus.push({ n: 'Desktop', f: 'setupDeviceMenu(1)' }); }
2121 +
2122 if ((currentDevicePanel != 2) && (currentNode != null) && (meshrights & 8) && ((meshrights == 0xFFFFFFFF) || ((meshrights & 1024) == 0)) && ((currentNode.mtype == 2) && (currentNode.agent.caps & 4))) { menus.push({ n: 'Files', f: 'setupDeviceMenu(2)' }); }
2123 updateFooterMenu(menus);
2124 }
views/default.handlebars
+1 -1
@@ -1847,7 +1847,7 @@
1847 if ((currentNode != null) && (IsNodeViewable(currentNode) == false)) { currentNode = null; go(1); }
1848
1849 // Change the reference to the current node
1850 - if (currentNode != null) { currentNode = getNodeFromId(currentNode._id); gotoDevice(currentNode._id, xxcurrentView, true); }
1850 + if (currentNode != null) { currentNode = getNodeFromId(currentNode._id); if (currentNode != null) { gotoDevice(currentNode._id, xxcurrentView, true); } else { go(1); } }
1851
1852 masterUpdate(1 | 2 | 4 | 64);
1853 break;