add set admin button

This commit is contained in:
Girish Ramakrishnan
2018-01-01 19:19:07 -08:00
parent 325814e7ca
commit ac4f12447b
7 changed files with 158 additions and 35 deletions

View File

@@ -838,6 +838,13 @@ angular.module('Application').service('Client', ['$http', 'md5', 'Notification',
}).error(defaultErrorHandler(callback));
};
Client.prototype.setAdmin = function (domain, password, callback) {
post('/api/v1/domains/' + domain + '/set_admin', { password: password }).success(function(data, status) {
if (status !== 202 || typeof data !== 'object') return callback(new ClientError(status, data));
callback(null, data);
}).error(defaultErrorHandler(callback));
};
Client.prototype.setCertificate = function (certificateFile, keyFile, callback) {
var data = {
cert: certificateFile,

View File

@@ -122,6 +122,39 @@
</div>
</div>
<!-- Modal domain migrate -->
<div class="modal fade" id="domainMigrateModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Migrate to {{ domainMigrate.domain.domain }} ?</h4>
</div>
<div class="modal-body">
<p>Moving to a custom domain will retain all your apps and data and will take around 15 minutes.</p>
<br/>
<fieldset>
<form role="form" name="domainMigrateForm" ng-submit="domainMigrate.submit()" autocomplete="off">
<div class="form-group" ng-class="{ 'has-error': (domainMigrateForm.password.$dirty && domainMigrateForm.password.$invalid) || (!domainMigrateForm.password.$dirty && domainMigrate.error) }">
<label class="control-label">Provide your password to confirm this action</label>
<div class="control-label" ng-show="(domainMigrateForm.password.$dirty && domainMigrateForm.password.$invalid) || (!domainMigrateForm.password.$dirty && domainMigrate.error)">
<small ng-show=" domainMigrateForm.password.$dirty && domainMigrateForm.password.$invalid">Password required</small>
<small ng-show="!domainMigrateForm.password.$dirty && domainMigrate.error">{{ domainMigrate.error }}</small>
</div>
<input type="password" class="form-control" ng-model="domainMigrate.password" id="domainMigratePasswordInput" name="password" required autofocus>
</div>
<input class="ng-hide" type="submit" ng-disabled="domainMigrateForm.$invalid || busy"/>
</form>
</fieldset>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-danger" ng-click="domainMigrate.submit()" ng-disabled="domainMigrateForm.$invalid || domainMigrate.busy"><i class="fa fa-circle-o-notch fa-spin" ng-show="domainMigrate.busy"></i> Migrate</button>
</div>
</div>
</div>
</div>
<!-- Modal domain remove -->
<div class="modal fade" id="domainRemoveModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
@@ -184,6 +217,7 @@
{{ domain.config.provider }}
</td>
<td class="text-right no-wrap" style="vertical-align: bottom">
<button class="btn btn-xs btn-default" ng-click="domainMigrate.show(domain)" ng-show="domain.config.provider !== 'caas' && config.provider === 'caas'" title="Migrate Domain"><i class="fa fa-exchange"></i></button>
<button class="btn btn-xs btn-default" ng-click="domainConfigure.show(domain)" ng-show="domain.config.provider !== 'caas'" title="Edit Domain"><i class="fa fa-pencil"></i></button>
<button class="btn btn-xs btn-danger" ng-hide="true" ng-click="domainRemove.show(domain)" ng-show="domain.config.provider !== 'caas'" title="Remove Domain"><i class="fa fa-trash-o"></i></button>
</td>

View File

@@ -183,6 +183,54 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat
}
};
$scope.domainMigrate = {
busy: false,
error: null,
domain: null,
password: null,
show: function (domain) {
$scope.domainMigrate.reset();
$scope.domainMigrate.domain = domain;
$('#domainMigrateModal').modal('show');
},
submit: function () {
$scope.domainMigrate.busy = true;
$scope.domainMigrate.error = null;
Client.setAdmin($scope.domainMigrate.domain.domain, $scope.domainMigrate.password, function (error) {
if (error && (error.statusCode === 403 || error.statusCode === 409)) {
$scope.domainMigrate.password = '';
$scope.domainMigrate.error = error.message;
$scope.domainMigrateForm.password.$setPristine();
$('#domainMigratePasswordInput').focus();
} else if (error) {
Client.error(error);
} else {
$('#domainMigrateModal').modal('hide');
$scope.domainMigrate.reset();
window.location.href = '/update.html';
}
$scope.domainMigrate.busy = false;
});
},
reset: function () {
$scope.domainMigrate.busy = false;
$scope.domainMigrate.error = null;
$scope.domainMigrate.domain = null;
$scope.domainMigrate.password = '';
$scope.domainMigrateForm.$setPristine();
$scope.domainMigrateForm.$setUntouched();
}
};
$scope.domainRemove = {
busy: false,
error: null,
@@ -251,7 +299,7 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat
// setup all the dialog focus handling
['domainConfigureModal', 'domainRemoveModal'].forEach(function (id) {
['domainConfigureModal', 'domainMigrateModal', 'domainRemoveModal'].forEach(function (id) {
$('#' + id).on('shown.bs.modal', function () {
$(this).find("[autofocus]:first").focus();
});