show vault id

This commit is contained in:
Jake McDermott 2017-12-18 16:15:24 -05:00
parent 5939116b0a
commit 79bd8b2c72
No known key found for this signature in database
GPG Key ID: 3B02CAD476EECB35
5 changed files with 70 additions and 33 deletions

View File

@ -552,8 +552,9 @@ export default ['$compile', 'Attr', 'Icon',
if(list.fields.info) {
customClass = list.fields.name.modalColumnClass || '';
const infoHeaderClass = _.get(list.fields.info, 'infoHeaderClass', 'List-tableHeader--info');
html += `<th
class="List-tableHeader--info"
class="${infoHeaderClass}"
base-path="${list.basePath || list.name}"
collection="${list.name}"
dataset="${list.iterator}_dataset"

View File

@ -36,9 +36,10 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
$('#multi-credential-modal').modal('hide');
};
scope.generateCredentialList = function(inputType = 'radio') {
scope.generateCredentialList = function(inputType = 'radio', list = scope.list) {
console.log(inputType);
let html = GenerateList.build({
list: scope.list,
list,
input_type: inputType,
mode: 'lookup'
});
@ -69,9 +70,9 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
scope.credentialTypeOptions = credentialTypeOptions;
scope.allCredentialTypeOptions = _.cloneDeep(credentialTypeOptions);
// We want to hide machine and vault dropdown options if a credential
// has already been selected for those types and the user interacting
// with the form doesn't have the ability to change them
// We want to hide the machine dropdown option if a machine credential
// has already been selected and the user interacting with the form doesn't
// have the ability to change it.
for(let i=scope.credentialTypeOptions.length - 1; i >=0; i--) {
if((scope.selectedCredentials.machine &&
scope.selectedCredentials.machine.credential_type_id === scope.credentialTypeOptions[i].value &&
@ -126,13 +127,13 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
$scope.credential_queryset.credential_type = parseInt($scope.credentialKind);
qs.search(GetBasePath('credentials'), $scope.credential_default_params)
.then(res => {
$scope.credential_dataset = res.data;
.then(({ data }) => {
$scope.credential_dataset = data;
$scope.credentials = $scope.credential_dataset.results;
if(!$scope.listRendered) {
if (newValueIsVault) {
$scope.generateCredentialList('checkbox');
$scope.generateCredentialList('checkbox', $scope.vaultList);
} else {
$scope.generateCredentialList();
}
@ -148,9 +149,26 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
$scope.credentials = $scope.credentials || [];
$scope.listRendered = false;
let credList = _.cloneDeep(CredentialList);
const credList = _.cloneDeep(CredentialList);
credList.emptyListText = i18n._('No Credentials Matching This Type Have Been Created');
const vaultCredList = _.cloneDeep(credList);
vaultCredList.fields.name.modalColumnClass = 'col-md-6';
vaultCredList.fields.info = {
label: i18n._('Vault ID'),
ngBind: 'credential.inputs.vault_id',
key: false,
nosort: true,
modalColumnClass: 'col-md-6',
infoHeaderClass: '',
dataPlacement: 'top'
};
$scope.list = credList;
$scope.vaultList = vaultCredList;
$scope.credential_default_params = {
order_by: 'name',
@ -191,21 +209,25 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
return $scope.toggle_row(credential);
};
$scope.toggle_row = function(selectedRow) {
$scope.toggle_row = function(credential) {
let rowDeselected = false;
for (let i = $scope.selectedCredentials.extra.length - 1; i >= 0; i--) {
if($scope.selectedCredentials.extra[i].id === selectedRow.id) {
if($scope.selectedCredentials.extra[i].id === credential.id) {
$scope.selectedCredentials.extra.splice(i, 1);
rowDeselected = true;
} else if(selectedRow.credential_type === $scope.selectedCredentials.extra[i].credential_type) {
if (selectedRow.credential_type !== $scope.credentialKinds.Vault) {
} else if(credential.credential_type === $scope.selectedCredentials.extra[i].credential_type) {
if (credential.credential_type !== $scope.credentialKinds.Vault) {
$scope.selectedCredentials.extra.splice(i, 1);
} else if($scope.selectedCredentials.extra[i].inputs.vault_id === credential.inputs.vault_id) {
// remove existing vault credentials if they have the same vault_id as a recently
// toggled vault credential
$scope.selectedCredentials.extra.splice(i, 1);
}
}
}
if(!rowDeselected) {
$scope.selectedCredentials.extra
.push(_.cloneDeep(selectedRow));
.push(_.cloneDeep(credential));
}
};

View File

@ -34,10 +34,13 @@
</i>
</div>
<div class="MultiCredential-tag" ng-class="tag.readOnly ? 'MultiCredential-tag--disabled' : 'MultiCredential-tag--deletable'">
<span class="MultiCredential-name--label ng-binding">
{{ tag.kind }}
</span>
<span class="MultiCredential-name u-wordwrapng-binding">
<span ng-if="tag.kind !== 'Vault'" class="MultiCredential-name--label ng-binding">
{{ tag.kind }}:
</span>
<span ng-if="tag.kind === 'Vault'" class="MultiCredential-name--label ng-binding">
{{ tag.kind }} ({{ tag.vault_id }}):
</span>
<span class="MultiCredential-name u-wordwrap ng-binding">
{{ tag.name }}
</span>
</div>

View File

@ -24,8 +24,11 @@
</div>
<div class="MultiCredential-tag"
ng-class="{'MultiCredential-tag--deletable': !fieldIsDisabled && !tag.readOnly, 'MultiCredential-tag--disabled': tag.readOnly}">
<span class="MultiCredential-name--label ng-binding">
{{ tag.kind }}
<span ng-if="tag.kind !== 'Vault'" class="MultiCredential-name--label ng-binding">
{{ tag.kind }}:
</span>
<span ng-if="tag.kind === 'Vault'" class="MultiCredential-name--label ng-binding">
{{ tag.kind }} ({{ tag.vault_id }}):
</span>
<span class="MultiCredential-name u-wordwrap ng-binding">
{{ tag.name }}

View File

@ -134,16 +134,24 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
});
}
return machineCred.concat(extraCreds).concat(vaultCred).map(cred => ({
name: cred.name,
id: cred.id,
postType: cred.postType,
readOnly: cred.readOnly ? true : false,
kind: typeOpts
.filter(type => {
return parseInt(cred.credential_type) === type.value;
})[0].name + ":"
}));
return machineCred.concat(extraCreds).concat(vaultCred).map(cred => {
const { name, id, postType, readOnly } = cred;
const [type] = typeOpts.filter(type => parseInt(cred.credential_type) === type.value)
const tagData = {
name: cred.name,
id: cred.id,
postType: cred.postType,
readOnly: cred.readOnly ? true : false,
kind: `${type.name}`
};
if (type.name === 'Vault') {
tagData.vault_id = _.get(cred, 'inputs.vault_id');
}
return tagData;
})
};
// remove credential from structured selected credential data and tag-view
@ -234,7 +242,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
// }));
// }
// get extra credentials
// get credentials
if (data.related.credentials) {
Rest.setUrl(data.related.credentials);
credDefers.push(Rest.get()
@ -243,7 +251,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
})
.catch(({data, status}) => {
if (status === 403) {
/* User doesn't have read access to the extra credentials, so use summary_fields */
/* User doesn't have read access to the credentials, so use summary_fields */
credentialGetPermissionDenied = true;
selectedCredentials.extra = job_template_obj.summary_fields.credentials;
_.map(selectedCredentials.extra, (cred) => {