Fix setup tool when binding to external auth
We now query the external auth provider for the external service's identifier before adding the linking row into the database. This fixes the case where the external service resolves a different identifier for the same username. Fixes #1477
This commit is contained in:
parent
d6b73a41de
commit
60bbca2185
6 changed files with 151 additions and 62 deletions
|
@ -11,6 +11,8 @@ angular.module("core-config-setup", ['angularFileUpload'])
|
|||
'configurationSaved': '&configurationSaved'
|
||||
},
|
||||
controller: function($rootScope, $scope, $element, $timeout, ApiService) {
|
||||
var authPassword = null;
|
||||
|
||||
$scope.HOSTNAME_REGEX = '^[a-zA-Z-0-9\.]+(:[0-9]+)?$';
|
||||
$scope.GITHOST_REGEX = '^https?://([a-zA-Z0-9]+\.?\/?)+$';
|
||||
|
||||
|
@ -188,10 +190,21 @@ angular.module("core-config-setup", ['angularFileUpload'])
|
|||
'password': opt_password || ''
|
||||
};
|
||||
|
||||
var errorDisplay = ApiService.errorDisplay(
|
||||
'Could not validate configuration. Please report this error.',
|
||||
function() {
|
||||
authPassword = null;
|
||||
});
|
||||
|
||||
ApiService.scValidateConfig(data, params).then(function(resp) {
|
||||
serviceInfo.status = resp.status ? 'success' : 'error';
|
||||
serviceInfo.errorMessage = $.trim(resp.reason || '');
|
||||
}, ApiService.errorDisplay('Could not validate configuration. Please report this error.'));
|
||||
|
||||
if (!resp.status) {
|
||||
authPassword = null;
|
||||
}
|
||||
|
||||
}, errorDisplay);
|
||||
};
|
||||
|
||||
$scope.checkValidateAndSave = function() {
|
||||
|
@ -262,6 +275,8 @@ angular.module("core-config-setup", ['angularFileUpload'])
|
|||
$scope.savingConfiguration = false;
|
||||
$scope.validating = $scope.getServices($scope.config);
|
||||
|
||||
authPassword = opt_password;
|
||||
|
||||
$('#validateAndSaveModal').modal({
|
||||
keyboard: false,
|
||||
backdrop: 'static'
|
||||
|
@ -282,15 +297,26 @@ angular.module("core-config-setup", ['angularFileUpload'])
|
|||
|
||||
var data = {
|
||||
'config': $scope.config,
|
||||
'hostname': window.location.host
|
||||
'hostname': window.location.host,
|
||||
'password': authPassword || ''
|
||||
};
|
||||
|
||||
var errorDisplay = ApiService.errorDisplay(
|
||||
'Could not save configuration. Please report this error.',
|
||||
function() {
|
||||
authPassword = null;
|
||||
});
|
||||
|
||||
ApiService.scUpdateConfig(data).then(function(resp) {
|
||||
authPassword = null;
|
||||
|
||||
$scope.savingConfiguration = false;
|
||||
$scope.mapped.$hasChanges = false;
|
||||
|
||||
$('#validateAndSaveModal').modal('hide');
|
||||
|
||||
$scope.configurationSaved({'config': $scope.config});
|
||||
}, ApiService.errorDisplay('Could not save configuration. Please report this error.'));
|
||||
}, errorDisplay);
|
||||
};
|
||||
|
||||
// Convert storage config to an array
|
||||
|
|
Reference in a new issue