mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 04:10:44 -03:30
show vault id
This commit is contained in:
parent
5939116b0a
commit
79bd8b2c72
@ -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"
|
||||
|
||||
@ -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));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 }}
|
||||
|
||||
@ -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) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user