From ecd79e751659d6e28952753a44c8b63c24ea8a6e Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 7 Oct 2021 19:55:23 -0700 Subject: [PATCH] Added account restriction on adding new devices. --- meshuser.js | 1 + views/default.handlebars | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/meshuser.js b/meshuser.js index bba0b9bd..d2a2fa19 100644 --- a/meshuser.js +++ b/meshuser.js @@ -67,6 +67,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use const SITERIGHT_RECORDINGS = 0x00000200; // 512 const SITERIGHT_LOCKSETTINGS = 0x00000400; // 1024 const SITERIGHT_ALLEVENTS = 0x00000800; // 2048 + const SITERIGHT_NONEWDEVICES = 0x00001000; // 4096 const SITERIGHT_ADMIN = 0xFFFFFFFF; // Protocol Numbers diff --git a/views/default.handlebars b/views/default.handlebars index 6a683df3..666618af 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -4061,15 +4061,15 @@ r += ''; if (mesh.mtype == 1) { r += '
' + "No Intel® AMT devices in this device group"; - if ((meshrights & 4) != 0) { r += ', ' + "add one" + ''; } + if (((meshrights & 4) != 0) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { r += ', ' + "add one" + ''; } } else if (mesh.mtype == 2) { r += '
'; // Open collapse div r += '
' + "No devices in this device group"; - if ((meshrights & 4) != 0) { r += ', ' + "add one" + ''; } + if (((meshrights & 4) != 0) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { r += ', ' + "add one" + ''; } } else if (mesh.mtype == 3) { r += '
'; // Open collapse div r += '
' + "No local devices in this device group"; - if ((meshrights & 4) != 0) { r += ', ' + "add one" + ''; } + if (((meshrights & 4) != 0) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { r += ', ' + "add one" + ''; } } r += '.
'; r += '
'; // End collapsing area @@ -4650,7 +4650,7 @@ r += ' ' + "Setup" + ''; } } - if (mesh.mtype == 2) { // Agent device group + if ((mesh.mtype == 2) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { // Agent device group r += ' ' + "Add Agent" + ''; if ((features & 2) == 0) { r += ' ' + "Invite" + ''; } } @@ -11403,11 +11403,11 @@ x += ' ' + "Setup" + ''; } } - if (currentMesh.mtype == 2) { + if ((currentMesh.mtype == 2) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { x += ' ' + "Add Agent" + ''; x += ' ' + "Invite" + ''; } - if (currentMesh.amt && (currentMesh.amt.type > 2)) { // ACM activation or Full Automatic + if (currentMesh.amt && (currentMesh.amt.type > 2) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { // ACM activation or Full Automatic x += ' ' + "ACM" + ''; } @@ -13582,6 +13582,7 @@ x = '
' + x; x += '
'; x += '
'; + x += '
'; x += '
'; x += '
'; x += '
'; @@ -13596,6 +13597,7 @@ Q('ua_nonewgroups').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 64) != 0)); // No New Groups Q('ua_nomeshcmd').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 128) != 0)); // No Tools (MeshCMD / Router) Q('ua_locksettings').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)); // Lock account settings + Q('ua_nonewdevices').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 4096) != 0)); // No New Devices } if ((userinfo.siteadmin & 2) != 0) { Q('ua_manageusers').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 2) != 0)); // Manage Users @@ -13629,6 +13631,7 @@ QE('ua_lockedaccount', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id)); QE('ua_nonewgroups', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id)); QE('ua_nomeshcmd', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id)); + QE('ua_nonewdevices', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id)); QE('ua_locksettings', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id)); Q('ua_fileaccessquota').value = (user.quota != null)?(user.quota / 1024):''; showUserAdminDialogValidate(); @@ -13645,6 +13648,7 @@ QE('ua_lockedaccount', !Q('ua_fulladmin').checked); QE('ua_nonewgroups', !Q('ua_fulladmin').checked); QE('ua_nomeshcmd', !Q('ua_fulladmin').checked); + QE('ua_nonewdevices', !Q('ua_fulladmin').checked); QE('ua_manageusergroups', !Q('ua_fulladmin').checked); QE('ua_managerecordings', !Q('ua_fulladmin').checked); QE('ua_allevents', !Q('ua_fulladmin').checked); @@ -13668,6 +13672,7 @@ if (Q('ua_managerecordings').checked == true) siteadmin += 512; if (Q('ua_locksettings').checked == true) siteadmin += 1024; if (Q('ua_allevents').checked == true) siteadmin += 2048; + if (Q('ua_nonewdevices').checked == true) siteadmin += 4096; } var x = { action: 'edituser', id: user._id, siteadmin: siteadmin }; if (isNaN(quota) == false) { x.quota = (quota * 1024); }