Disable various views for non-operators
This commit is contained in:
+2
-2
@@ -156,8 +156,8 @@
|
||||
<li ng-show="user.admin"><a href="#/email"><i class="fa fa-envelope fa-fw"></i> Email</a></li>
|
||||
<li ng-show="user.admin"><a href="#/graphs"><i class="fa fa-bar-chart fa-fw"></i> Graphs</a></li>
|
||||
<li ng-show="user.admin"><a href="#/settings"><i class="fa fa-wrench fa-fw"></i> Settings</a></li>
|
||||
<li ng-show="user.admin" class="divider"></li>
|
||||
<li ng-show="user.admin"><a href="#/support"><i class="fa fa-comment fa-fw"></i> Support</a></li>
|
||||
<li ng-show="user.admin && config.features.operatorActions" class="divider"></li>
|
||||
<li ng-show="user.admin && config.features.operatorActions"><a href="#/support"><i class="fa fa-comment fa-fw"></i> Support</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="" ng-click="logout($event)"><i class="fa fa-sign-out fa-fw"></i> Logout</a></li>
|
||||
</ul>
|
||||
|
||||
+2
-1
@@ -233,7 +233,8 @@ angular.module('Application').service('Client', ['$http', '$interval', 'md5', 'N
|
||||
// derive feature flags from edition
|
||||
config.features = {
|
||||
spaces: config.edition === 'education',
|
||||
hyphenatedSubdomains: config.edition === 'hostingprovider'
|
||||
hyphenatedSubdomains: config.edition === 'hostingprovider',
|
||||
operatorActions: config.edition !== 'hostingprovider'
|
||||
};
|
||||
|
||||
angular.copy(config, this._config);
|
||||
|
||||
+1
-1
@@ -182,7 +182,7 @@ angular.module('Application').controller('MainController', ['$scope', '$route',
|
||||
|
||||
$scope.initialized = true;
|
||||
|
||||
if ($scope.user.admin) {
|
||||
if ($scope.user.admin && $scope.config.features.operatorActions) {
|
||||
runConfigurationChecks();
|
||||
|
||||
$scope.fetchAppstoreProfileAndSubscription(function (error) {
|
||||
|
||||
+1
-1
@@ -608,7 +608,7 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
|
||||
fetchUsers();
|
||||
fetchGroups();
|
||||
getDomains();
|
||||
if ($scope.user.admin) getBackupConfig(); // FIXME: detect disabled backups some other way
|
||||
if ($scope.user.admin && $scope.config.features.operatorActions) getBackupConfig(); // FIXME: detect disabled backups some other way
|
||||
}
|
||||
|
||||
var refreshAppsTimer = $interval(Client.refreshInstalledApps.bind(Client), 5000);
|
||||
|
||||
@@ -492,6 +492,11 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca
|
||||
return callback();
|
||||
}
|
||||
|
||||
if ($scope.user.admin && !$scope.config.features.operatorActions) {
|
||||
$scope.validAppstoreAccount = true;
|
||||
return callback();
|
||||
}
|
||||
|
||||
Client.getAppstoreConfig(function (error, result) {
|
||||
if (error) return callback(error);
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
<span>{{ prettyProviderName(backupConfig.provider) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="backupConfig.provider !== 'caas'">
|
||||
<div class="row" ng-show="backupConfig.provider !== 'caas' && config.features.operatorActions">
|
||||
<div class="col-xs-6">
|
||||
<span class="text-muted">Location</span>
|
||||
</div>
|
||||
@@ -171,7 +171,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="row" ng-show="backupConfig.provider !== 'caas' && config.features.operatorActions">
|
||||
<div class="col-xs-6">
|
||||
<span class="text-muted">Storage Format</span>
|
||||
</div>
|
||||
@@ -227,7 +227,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<button class="btn btn-outline btn-primary pull-right" ng-click="configureBackup.show()" ng-disabled="createBackup.busy" ng-show="backupConfig.provider !== 'caas'">Configure</button>
|
||||
<button class="btn btn-outline btn-primary pull-right" ng-click="configureBackup.show()" ng-disabled="createBackup.busy" ng-show="backupConfig.provider !== 'caas' && user.admin && config.features.operatorActions">Configure</button>
|
||||
<button class="btn btn-outline btn-primary" ng-click="createBackup.doCreateBackup()" ng-disabled="createBackup.busy" style="margin-right: 10px">Backup now</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,6 +4,8 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
|
||||
Client.onReady(function () { if (!Client.getUserInfo().admin) $location.path('/'); });
|
||||
|
||||
$scope.config = Client.getConfig();
|
||||
$scope.user = Client.getUserInfo();
|
||||
|
||||
$scope.backupConfig = {};
|
||||
$scope.lastBackup = null;
|
||||
$scope.backups = [];
|
||||
@@ -64,6 +66,8 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
|
||||
];
|
||||
|
||||
$scope.prettyProviderName = function (provider) {
|
||||
if (!$scope.config.features.operatorActions) return $scope.config.provider;
|
||||
|
||||
switch (provider) {
|
||||
case 'caas': return 'Managed Cloudron';
|
||||
default: return provider;
|
||||
@@ -316,8 +320,6 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
|
||||
// $scope.configureBackup.reset();
|
||||
$('#configureBackupModal').modal('hide');
|
||||
|
||||
// now refresh the ui
|
||||
Client.refreshConfig();
|
||||
getBackupConfig();
|
||||
});
|
||||
}
|
||||
@@ -347,7 +349,7 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
|
||||
|
||||
Client.onReady(function () {
|
||||
fetchBackups();
|
||||
getBackupConfig();
|
||||
if ($scope.config.features.operatorActions) getBackupConfig();
|
||||
|
||||
// show backup status
|
||||
$scope.createBackup.updateStatus();
|
||||
|
||||
@@ -228,11 +228,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-left" ng-show="config.provider !== 'caas'">
|
||||
<div class="text-left" ng-show="config.provider !== 'caas' && user.admin && config.features.operatorActions">
|
||||
<h3>Cloudron.io Account</h3>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-bottom: 15px;" ng-show="config.provider !== 'caas'">
|
||||
<div class="card" style="margin-bottom: 15px;" ng-show="config.provider !== 'caas' && user.admin && config.features.operatorActions">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
A Cloudron subscription provides access to the Cloudron App Store. This ensures you are running the latest version and keeps your apps and server secure.
|
||||
|
||||
@@ -20,8 +20,8 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca
|
||||
|
||||
$scope.prettyProviderName = function (provider) {
|
||||
switch (provider) {
|
||||
case 'caas': return 'Managed Cloudron';
|
||||
default: return provider;
|
||||
case 'caas': return 'Managed Cloudron';
|
||||
default: return provider;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -417,7 +417,7 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca
|
||||
$scope.currentPlan = caasConfig.plan;
|
||||
$scope.currency = caasConfig.currency === 'eur' ? '€' : '$';
|
||||
});
|
||||
} else {
|
||||
} else if ($scope.config.features.operatorActions) {
|
||||
Client.getAppstoreConfig(function (error, appstoreConfig) {
|
||||
if (error) return console.error(error);
|
||||
if (!appstoreConfig.token) return;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
angular.module('Application').controller('SupportController', ['$scope', '$location', 'Client', function ($scope, $location, Client) {
|
||||
Client.onReady(function () { if (!Client.getUserInfo().admin) $location.path('/'); });
|
||||
Client.onReady(function () { if (!Client.getConfig().operatorActions || !Client.getUserInfo().admin) $location.path('/'); });
|
||||
|
||||
$scope.config = Client.getConfig();
|
||||
$scope.user = Client.getUserInfo();
|
||||
|
||||
Reference in New Issue
Block a user