diff --git a/webadmin/src/views/apps.html b/webadmin/src/views/apps.html index 26ba92342..702da91c5 100644 --- a/webadmin/src/views/apps.html +++ b/webadmin/src/views/apps.html @@ -77,24 +77,30 @@
-
Select at least one group
+
Select at least one group
- +
+
+ +

@@ -151,13 +157,13 @@ - + diff --git a/webadmin/src/views/apps.js b/webadmin/src/views/apps.js index 8fd203812..175889fac 100644 --- a/webadmin/src/views/apps.js +++ b/webadmin/src/views/apps.js @@ -35,9 +35,10 @@ angular.module('Application').controller('AppsController', ['$scope', '$location keyFile: null, keyFileName: '', memoryLimit: $scope.memoryTicks[0], - accessRestrictionOption: '', + accessRestrictionOption: 'any', accessRestriction: { users: [], groups: [] }, xFrameOptions: '', + needsOAuthProxy: false, isAccessRestrictionValid: function () { var tmp = $scope.appConfigure.accessRestriction; @@ -92,9 +93,10 @@ angular.module('Application').controller('AppsController', ['$scope', '$location $scope.appConfigure.keyFile = null; $scope.appConfigure.keyFileName = ''; $scope.appConfigure.memoryLimit = $scope.memoryTicks[0]; - $scope.appConfigure.accessRestrictionOption = ''; + $scope.appConfigure.accessRestrictionOption = 'any'; $scope.appConfigure.accessRestriction = { users: [], groups: [] }; $scope.appConfigure.xFrameOptions = ''; + $scope.appConfigure.needsOAuthProxy = false; $scope.appConfigureForm.$setPristine(); $scope.appConfigureForm.$setUntouched(); @@ -180,11 +182,19 @@ angular.module('Application').controller('AppsController', ['$scope', '$location $scope.appConfigure.location = app.altDomain || app.location; $scope.appConfigure.usingAltDomain = !!app.altDomain; $scope.appConfigure.portBindingsInfo = app.manifest.tcpPorts || {}; // Portbinding map only for information - $scope.appConfigure.accessRestrictionOption = app.accessRestriction ? 'restricted' : ''; + $scope.appConfigure.accessRestrictionOption = app.accessRestriction ? 'groups' : 'any'; $scope.appConfigure.accessRestriction = app.accessRestriction || { users: [], groups: [] }; $scope.appConfigure.memoryLimit = app.memoryLimit; $scope.appConfigure.xFrameOptions = app.xFrameOptions.indexOf('ALLOW-FROM') === 0 ? app.xFrameOptions.split(' ')[1] : ''; + var manifest = app.manifest; + $scope.appConfigure.needsOAuthProxy = !(manifest.addons['ldap'] || manifest.addons['oauth'] || manifest.addons['simpleauth']); + if ($scope.appConfigure.needsOAuthProxy && !app.oauthProxy) { + $scope.appConfigure.accessRestrictionOption = 'unrestricted'; + } else { + $scope.appConfigure.accessRestrictionOption = app.accessRestriction ? 'groups' : 'any'; + } + // fill the portBinding structures. There might be holes in the app.portBindings, which signalizes a disabled port for (var env in $scope.appConfigure.portBindingsInfo) { if (app.portBindings && app.portBindings[env]) { @@ -218,11 +228,12 @@ angular.module('Application').controller('AppsController', ['$scope', '$location location: $scope.appConfigure.usingAltDomain ? $scope.appConfigure.app.location : $scope.appConfigure.location, altDomain: $scope.appConfigure.usingAltDomain ? $scope.appConfigure.location : null, portBindings: finalPortBindings, - accessRestriction: !$scope.appConfigure.accessRestrictionOption ? null : $scope.appConfigure.accessRestriction, + accessRestriction: $scope.appConfigure.accessRestrictionOption === 'groups' ? $scope.appConfigure.accessRestriction : null, cert: $scope.appConfigure.certificateFile, key: $scope.appConfigure.keyFile, xFrameOptions: $scope.appConfigure.xFrameOptions ? ('ALLOW-FROM ' + $scope.appConfigure.xFrameOptions) : 'SAMEORIGIN', - memoryLimit: $scope.appConfigure.memoryLimit + memoryLimit: $scope.appConfigure.memoryLimit, + oauthProxy: $scope.appConfigure.needsOAuthProxy && $scope.appConfigure.accessRestrictionOption !== 'unrestricted' }; Client.configureApp($scope.appConfigure.app.id, $scope.appConfigure.password, data, function (error) { diff --git a/webadmin/src/views/appstore.html b/webadmin/src/views/appstore.html index 17bbbb84e..2ccfef6a3 100644 --- a/webadmin/src/views/appstore.html +++ b/webadmin/src/views/appstore.html @@ -43,25 +43,31 @@
No groups available. Create groups to restrict access to them first.
-
Select at least one group
+
Select at least one group
- +
+
+ +

diff --git a/webadmin/src/views/appstore.js b/webadmin/src/views/appstore.js index 5a4e02829..8cc8a406e 100644 --- a/webadmin/src/views/appstore.js +++ b/webadmin/src/views/appstore.js @@ -34,9 +34,10 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca certificateFileName: '', keyFile: null, keyFileName: '', - accessRestrictionOption: '', + accessRestrictionOption: 'any', accessRestriction: { users: [], groups: [] }, accessRestrictionSingleUser: null, + needsOAuthProxy: false, isAccessRestrictionValid: function () { var tmp = $scope.appInstall.accessRestriction; @@ -63,9 +64,10 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca $scope.appInstall.certificateFileName = ''; $scope.appInstall.keyFile = null; $scope.appInstall.keyFileName = ''; - $scope.appInstall.accessRestrictionOption = ''; + $scope.appInstall.accessRestrictionOption = 'any'; $scope.appInstall.accessRestriction = { users: [], groups: [] }; $scope.appInstall.accessRestrictionSingleUser = null; + $scope.appInstall.needsOAuthProxy = false; $('#collapseInstallForm').collapse('hide'); $('#collapseResourceConstraint').collapse('hide'); @@ -104,10 +106,14 @@ 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.accessRestrictionOption = app.accessRestriction ? 'restricted' : ''; + $scope.appInstall.accessRestrictionOption = app.accessRestriction ? 'groups' : 'any'; $scope.appInstall.accessRestriction = app.accessRestriction || { users: [], groups: [] }; $scope.appInstall.accessRestrictionSingleUser = null; + var manifest = app.manifest; + $scope.appInstall.needsOAuthProxy = !(manifest.addons['ldap'] || manifest.addons['oauth'] || manifest.addons['simpleauth']); + $scope.appInstall.accessRestrictionOption = 'any'; + // set default ports for (var env in $scope.appInstall.app.manifest.tcpPorts) { $scope.appInstall.portBindings[env] = $scope.appInstall.app.manifest.tcpPorts[env].defaultValue || 0; @@ -134,7 +140,7 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca // translate to accessRestriction object var accessRestriction = $scope.appInstall.app.manifest.singleUser ? { users: [ $scope.appInstall.accessRestrictionSingleUser.id ] - } : (!$scope.appInstall.accessRestrictionOption ? null : $scope.appInstall.accessRestriction); + } : ($scope.appInstall.accessRestrictionOption === 'groups' ? $scope.appInstall.accessRestriction : null); var data = { location: $scope.appInstall.location || '', @@ -142,6 +148,7 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca accessRestriction: accessRestriction, cert: $scope.appInstall.certificateFile, key: $scope.appInstall.keyFile, + oauthProxy: $scope.appInstall.needsOAuthProxy && ($scope.appInstall.app.manifest.singleUser || $scope.appInstall.accessRestrictionOption !== 'unrestricted') }; Client.installApp($scope.appInstall.app.id, $scope.appInstall.app.manifest, $scope.appInstall.app.title, data, function (error) {