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;