mirror of
https://github.com/ansible/awx.git
synced 2026-04-14 06:29:25 -02:30
Fixed job template view for user with read-only access
This commit is contained in:
@@ -72,7 +72,7 @@ export default
|
|||||||
$scope.playbook_options = [$scope.playbook];
|
$scope.playbook_options = [$scope.playbook];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Empty($scope.project)) {
|
if (!Empty($scope.project) && $scope.job_template_obj.summary_fields.user_capabilities.edit) {
|
||||||
let promises = [];
|
let promises = [];
|
||||||
url = GetBasePath('projects') + $scope.project + '/playbooks/';
|
url = GetBasePath('projects') + $scope.project + '/playbooks/';
|
||||||
Wait('start');
|
Wait('start');
|
||||||
|
|||||||
@@ -153,15 +153,94 @@ export default
|
|||||||
|
|
||||||
scope.can_edit = data.summary_fields.user_capabilities.edit;
|
scope.can_edit = data.summary_fields.user_capabilities.edit;
|
||||||
|
|
||||||
MultiCredentialService.loadCredentials(data)
|
if(scope.job_template_obj.summary_fields.user_capabilities.edit) {
|
||||||
.then(([selectedCredentials, credTypes, credTypeOptions,
|
MultiCredentialService.loadCredentials(data)
|
||||||
credTags]) => {
|
.then(([selectedCredentials, credTypes, credTypeOptions,
|
||||||
scope.selectedCredentials = selectedCredentials;
|
credTags]) => {
|
||||||
scope.credential_types = credTypes;
|
scope.selectedCredentials = selectedCredentials;
|
||||||
scope.credentialTypeOptions = credTypeOptions;
|
scope.credential_types = credTypes;
|
||||||
scope.credentialsToPost = credTags;
|
scope.credentialTypeOptions = credTypeOptions;
|
||||||
scope.$emit('jobTemplateLoaded', master);
|
scope.credentialsToPost = credTags;console.log(credTags);
|
||||||
});
|
scope.$emit('jobTemplateLoaded', master);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
if (data.summary_fields.credential) {
|
||||||
|
scope.selectedCredentials.machine = data.summary_fields.credential;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.summary_fields.vault_credential) {
|
||||||
|
scope.selectedCredentials.vault = data.summary_fields.vault_credential;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extra credentials are not included in summary_fields so we have to go
|
||||||
|
// out and get them ourselves.
|
||||||
|
|
||||||
|
let defers = [],
|
||||||
|
typesArray = [],
|
||||||
|
credTypeOptions;
|
||||||
|
|
||||||
|
Rest.setUrl(data.related.extra_credentials);
|
||||||
|
defers.push(Rest.get()
|
||||||
|
.then((data) => {
|
||||||
|
scope.selectedCredentials.extra = data.data.results;
|
||||||
|
})
|
||||||
|
.catch(({data, status}) => {
|
||||||
|
ProcessErrors(null, data, status, null,
|
||||||
|
{
|
||||||
|
hdr: 'Error!',
|
||||||
|
msg: 'Failed to get extra credentials. ' +
|
||||||
|
'Get returned status: ' +
|
||||||
|
status
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
defers.push(MultiCredentialService.getCredentialTypes()
|
||||||
|
.then(({credential_types, credentialTypeOptions}) => {
|
||||||
|
typesArray = Object.keys(credential_types).map(key => credential_types[key]);
|
||||||
|
credTypeOptions = credentialTypeOptions;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return $q.all(defers).then(() => {
|
||||||
|
let machineAndVaultCreds = [],
|
||||||
|
extraCreds = [];
|
||||||
|
|
||||||
|
if(scope.selectedCredentials.machine) {
|
||||||
|
machineAndVaultCreds.push(scope.selectedCredentials.machine);
|
||||||
|
}
|
||||||
|
if(scope.selectedCredentials.vault) {
|
||||||
|
machineAndVaultCreds.push(scope.selectedCredentials.vault);
|
||||||
|
}
|
||||||
|
|
||||||
|
machineAndVaultCreds.map(cred => ({
|
||||||
|
name: cred.name,
|
||||||
|
id: cred.id,
|
||||||
|
postType: cred.postType,
|
||||||
|
kind: typesArray
|
||||||
|
.filter(type => {
|
||||||
|
return cred.kind === type.kind || parseInt(cred.credential_type) === type.value;
|
||||||
|
})[0].name + ":"
|
||||||
|
}));
|
||||||
|
|
||||||
|
extraCreds = extraCreds.concat(scope.selectedCredentials.extra).map(cred => ({
|
||||||
|
name: cred.name,
|
||||||
|
id: cred.id,
|
||||||
|
postType: cred.postType,
|
||||||
|
kind: credTypeOptions
|
||||||
|
.filter(type => {
|
||||||
|
return parseInt(cred.credential_type) === type.value;
|
||||||
|
})[0].name + ":"
|
||||||
|
}));
|
||||||
|
|
||||||
|
scope.credentialsToPost = machineAndVaultCreds.concat(extraCreds);
|
||||||
|
|
||||||
|
scope.$emit('jobTemplateLoaded', master);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.error(function (data, status) {
|
.error(function (data, status) {
|
||||||
ProcessErrors(scope, data, status, form, {
|
ProcessErrors(scope, data, status, form, {
|
||||||
|
|||||||
Reference in New Issue
Block a user