diff --git a/webadmin/src/views/appstore.html b/webadmin/src/views/appstore.html index b2dbc8047..aac333bd5 100644 --- a/webadmin/src/views/appstore.html +++ b/webadmin/src/views/appstore.html @@ -36,10 +36,31 @@
- -

This is a single user application.

- + + +
+
+ +
+ +
+
+ +
+
Select at least one group
+
+
+ + + +
+

diff --git a/webadmin/src/views/appstore.js b/webadmin/src/views/appstore.js index 0ada3cf4b..893f38b6b 100644 --- a/webadmin/src/views/appstore.js +++ b/webadmin/src/views/appstore.js @@ -18,12 +18,27 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca app: {}, location: '', portBindings: {}, - accessRestriction: null, mediaLinks: [], certificateFile: null, certificateFileName: '', keyFile: null, - keyFileName: '' + keyFileName: '', + accessRestrictionOption: '', + accessRestriction: { users: [], groups: [] }, + accessRestrictionSingleUser: null, + + isAccessRestrictionValid: function () { + var tmp = $scope.appInstall.accessRestriction; + return !!(tmp.users.length || tmp.groups.length); + }, + + toggleGroup: function (group) { + var groups = $scope.appInstall.accessRestriction.groups; + var pos = groups.indexOf(group.id); + + if (pos === -1) groups.push(group.id); + else groups.splice(pos, 1); + } }; $scope.appNotFound = { @@ -141,7 +156,6 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca $scope.appInstall.error = {}; $scope.appInstall.location = ''; $scope.appInstall.portBindings = {}; - $scope.appInstall.accessRestriction = null; $scope.appInstall.installFormVisible = false; $scope.appInstall.resourceConstraintVisible = false; $scope.appInstall.mediaLinks = []; @@ -149,6 +163,9 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca $scope.appInstall.certificateFileName = ''; $scope.appInstall.keyFile = null; $scope.appInstall.keyFileName = ''; + $scope.appInstall.accessRestrictionOption = ''; + $scope.appInstall.accessRestriction = { users: [], groups: [] }; + $scope.appInstall.accessRestrictionSingleUser = null; $('#collapseInstallForm').collapse('hide'); $('#collapseResourceConstraint').collapse('hide'); @@ -214,7 +231,9 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca $scope.appInstall.portBindingsInfo = $scope.appInstall.app.manifest.tcpPorts || {}; // Portbinding map only for information $scope.appInstall.portBindings = {}; // This is the actual model holding the env:port pair $scope.appInstall.portBindingsEnabled = {}; // This is the actual model holding the enabled/disabled flag - $scope.appInstall.accessRestriction = app.accessRestriction ? app.accessRestriction.users[0] : $scope.user; + $scope.appInstall.accessRestrictionOption = app.accessRestriction ? 'restricted' : ''; + $scope.appInstall.accessRestriction = app.accessRestriction || { users: [], groups: [] }; + $scope.appInstall.accessRestrictionSingleUser = null; // set default ports for (var env in $scope.appInstall.app.manifest.tcpPorts) { @@ -246,8 +265,8 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca // translate to accessRestriction object var accessRestriction = $scope.appInstall.app.manifest.singleUser ? { - users: [ $scope.appInstall.accessRestriction.id ] - } : null; + users: [ $scope.appInstall.accessRestrictionSingleUser.id ] + } : (!$scope.appInstall.accessRestrictionOption ? null : $scope.appInstall.accessRestriction); var data = { location: $scope.appInstall.location || '',