Add ability to enable, disable and view team syncing in UI and API
Also extracts out some common testing infrastructure to make testing APIs easier now using pytest
This commit is contained in:
parent
a17b637032
commit
8ea3977140
9 changed files with 298 additions and 27 deletions
|
@ -14,12 +14,14 @@
|
|||
var teamname = $routeParams.teamname;
|
||||
var orgname = $routeParams.orgname;
|
||||
|
||||
$scope.context = {};
|
||||
$scope.orgname = orgname;
|
||||
$scope.teamname = teamname;
|
||||
$scope.addingMember = false;
|
||||
$scope.memberMap = null;
|
||||
$scope.allowEmail = Features.MAILING;
|
||||
$scope.feedback = null;
|
||||
$scope.allowedEntities = ['user', 'robot'];
|
||||
|
||||
$rootScope.title = 'Loading...';
|
||||
|
||||
|
@ -146,6 +148,39 @@
|
|||
}, ApiService.errorDisplay('Cannot remove team member'));
|
||||
};
|
||||
|
||||
$scope.getServiceName = function(service) {
|
||||
switch (service) {
|
||||
case 'ldap':
|
||||
return 'LDAP';
|
||||
|
||||
case 'keystone':
|
||||
return 'Keystone Auth';
|
||||
|
||||
case 'jwtauthn':
|
||||
return 'External JWT Auth';
|
||||
|
||||
default:
|
||||
return synced.service;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.getAddPlaceholder = function(email, synced) {
|
||||
var kinds = [];
|
||||
|
||||
if (!synced) {
|
||||
kinds.push('registered user');
|
||||
}
|
||||
|
||||
kinds.push('robot');
|
||||
|
||||
if (email && !synced) {
|
||||
kinds.push('email address');
|
||||
}
|
||||
|
||||
kind_string = kinds.join(', ')
|
||||
return 'Add a ' + kind_string + ' to the team';
|
||||
};
|
||||
|
||||
$scope.updateForDescription = function(content) {
|
||||
$scope.organization.teams[teamname].description = content;
|
||||
|
||||
|
@ -166,6 +201,48 @@
|
|||
});
|
||||
};
|
||||
|
||||
$scope.showEnableSyncing = function() {
|
||||
$scope.enableSyncingInfo = {
|
||||
'service_info': $scope.canSync,
|
||||
'config': {}
|
||||
};
|
||||
};
|
||||
|
||||
$scope.showDisableSyncing = function() {
|
||||
msg = 'Are you sure you want to disable group syncing on this team? ' +
|
||||
'The team will once again become editable.';
|
||||
bootbox.confirm(msg, function(result) {
|
||||
if (result) {
|
||||
$scope.disableSyncing();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.disableSyncing = function() {
|
||||
var params = {
|
||||
'orgname': orgname,
|
||||
'teamname': teamname
|
||||
};
|
||||
|
||||
var errorHandler = ApiService.errorDisplay('Could not disable team syncing');
|
||||
ApiService.disableOrganizationTeamSync(null, params).then(function(resp) {
|
||||
loadMembers();
|
||||
}, errorHandler);
|
||||
};
|
||||
|
||||
$scope.enableSyncing = function(config, callback) {
|
||||
var params = {
|
||||
'orgname': orgname,
|
||||
'teamname': teamname
|
||||
};
|
||||
|
||||
var errorHandler = ApiService.errorDisplay('Cannot enable team syncing', callback);
|
||||
ApiService.enableOrganizationTeamSync(config, params).then(function(resp) {
|
||||
loadMembers();
|
||||
callback(true);
|
||||
}, errorHandler);
|
||||
};
|
||||
|
||||
var loadOrganization = function() {
|
||||
$scope.orgResource = ApiService.getOrganizationAsResource({'orgname': orgname}).get(function(org) {
|
||||
$scope.organization = org;
|
||||
|
@ -187,6 +264,9 @@
|
|||
$scope.membersResource = ApiService.getOrganizationTeamMembersAsResource(params).get(function(resp) {
|
||||
$scope.members = resp.members;
|
||||
$scope.canEditMembers = resp.can_edit;
|
||||
$scope.canSync = resp.can_sync;
|
||||
$scope.syncInfo = resp.synced;
|
||||
$scope.allowedEntities = resp.synced ? ['robot'] : ['user', 'robot'];
|
||||
|
||||
$('.info-icon').popover({
|
||||
'trigger': 'hover',
|
||||
|
|
Reference in a new issue