diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 03c38e3237cc317f45ecb60910231d2f232803de..bbe3b449f418e5566d969295e438d166d17f87a6 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -36,6 +36,7 @@ var SbmlParameter = require('./map/data/SbmlParameter'); var SecurityError = require('./SecurityError'); var SessionData = require('./SessionData'); var User = require('./map/data/User'); +var PrivilegeType = require('./map/data/PrivilegeType'); var GuiConnector = require('./GuiConnector'); @@ -1232,9 +1233,17 @@ ServerConnector.updateUser = function (user) { connectedToLdap: user.isConnectedToLdap() } }; - return self.sendPatchRequest(self.getUserUrl(queryParams), filterParams).then(function () { + var canModifyPrivileges = false; + return self.sendPatchRequest(self.getUserUrl(queryParams), filterParams).then(function (response) { + canModifyPrivileges = JSON.parse(response).privileges.some(function (privilege) { + return privilege.type === PrivilegeType.USER_MANAGEMENT + || privilege.type === PrivilegeType.PROJECT_MANAGEMENT; + }); return self.getConfiguration(); }).then(function (configuration) { + if (!canModifyPrivileges) { + return Promise.resolve(user); + } return self.updateUserPrivileges({user: user, privileges: user.privilegesToExport(configuration)}); }); };