diff --git a/src/views/app.html b/src/views/app.html index 9108232ce..e64196222 100644 --- a/src/views/app.html +++ b/src/views/app.html @@ -765,11 +765,11 @@
- {{ 'appstore.installDialog.users' | tr }}: + {{ 'appstore.installDialog.users' | tr }}:
- {{ 'appstore.installDialog.groups' | tr }}: + {{ 'appstore.installDialog.groups' | tr }}:
@@ -786,11 +786,11 @@
- {{ 'appstore.installDialog.users' | tr }}: + {{ 'appstore.installDialog.users' | tr }}:
- {{ 'appstore.installDialog.groups' | tr }}: + {{ 'appstore.installDialog.groups' | tr }}:
diff --git a/src/views/app.js b/src/views/app.js index fa61b7ace..72f77f6a1 100644 --- a/src/views/app.js +++ b/src/views/app.js @@ -456,6 +456,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location' ftp: false, ssoAuth: false, accessRestrictionOption: 'any', + accessRestrictionOptionCur: 'any', accessRestriction: { users: [], groups: [] }, operators: { users: [], groups: [] }, @@ -472,6 +473,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location' $scope.access.ftp = app.manifest.addons.localstorage && app.manifest.addons.localstorage.ftp; $scope.access.ssoAuth = (app.manifest.addons['ldap'] || app.manifest.addons['proxyAuth']) && app.sso; $scope.access.accessRestrictionOption = app.accessRestriction ? 'groups' : 'any'; + $scope.access.accessRestrictionOptionCur = app.accessRestriction ? 'groups' : 'any'; $scope.access.accessRestriction = { users: [], groups: [] }; $scope.access.operators = { users: [], groups: [] }; @@ -517,17 +519,25 @@ angular.module('Application').controller('AppController', ['$scope', '$location' operators.groups = $scope.access.operators.groups.map(function (g) { return g.id; }); } - Client.configureApp($scope.app.id, 'access_restriction', { accessRestriction: accessRestriction }, function (error) { + async.series([ + function (callback) { + if ($scope.access.accessRestrictionOption === $scope.access.accessRestrictionOptionCur && !$scope.accessForm.accessUsersSelect.$dirty && !$scope.accessForm.accessGroupsSelect.$dirty) return callback(); + + Client.configureApp($scope.app.id, 'access_restriction', { accessRestriction: accessRestriction }, callback); + }, + function (callback) { + if (!$scope.accessForm.operatorsUsersSelect.$dirty && !$scope.accessForm.operatorsGroupsSelect.$dirty) return callback(); + + Client.configureApp($scope.app.id, 'operators', { operators: operators }, callback); + } + ], function (error) { if (error) return Client.error(error); - Client.configureApp($scope.app.id, 'operators', { operators: operators }, function (error) { - if (error) return Client.error(error); + $scope.accessForm.$setPristine(); - $timeout(function () { - $scope.access.success = true; - $scope.access.busy = false; - }, 1000); - }); + $scope.access.accessRestrictionOptionCur = $scope.access.accessRestrictionOption; + $scope.access.success = true; + $scope.access.busy = false; }); } };