mirror of
https://github.com/ansible/awx.git
synced 2026-03-06 11:11:07 -03:30
More fixes for JT admin edit use cases
Signed-off-by: mabashian <mabashia@redhat.com>
This commit is contained in:
@@ -37,8 +37,7 @@
|
|||||||
$scope.mode = "add";
|
$scope.mode = "add";
|
||||||
$scope.parseType = 'yaml';
|
$scope.parseType = 'yaml';
|
||||||
$scope.credentialNotPresent = false;
|
$scope.credentialNotPresent = false;
|
||||||
$scope.canChangeProject = true;
|
$scope.canGetAllRelatedResources = true;
|
||||||
$scope.canChangeInventory = true;
|
|
||||||
|
|
||||||
md5Setup({
|
md5Setup({
|
||||||
scope: $scope,
|
scope: $scope,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export default
|
|||||||
'Empty', 'Prompt', 'ToJSON', 'GetChoices', 'CallbackHelpInit',
|
'Empty', 'Prompt', 'ToJSON', 'GetChoices', 'CallbackHelpInit',
|
||||||
'InitiatePlaybookRun' , 'initSurvey', '$state', 'CreateSelect2',
|
'InitiatePlaybookRun' , 'initSurvey', '$state', 'CreateSelect2',
|
||||||
'ToggleNotification','$q', 'InstanceGroupsService', 'InstanceGroupsData', 'MultiCredentialService', 'availableLabels',
|
'ToggleNotification','$q', 'InstanceGroupsService', 'InstanceGroupsData', 'MultiCredentialService', 'availableLabels',
|
||||||
'canChangeProject', 'canChangeInventory', 'jobTemplateData', 'ParseVariableString',
|
'canGetProject', 'canGetInventory', 'jobTemplateData', 'ParseVariableString',
|
||||||
function(
|
function(
|
||||||
$filter, $scope, $rootScope,
|
$filter, $scope, $rootScope,
|
||||||
$location, $stateParams, JobTemplateForm, GenerateForm, Rest, Alert,
|
$location, $stateParams, JobTemplateForm, GenerateForm, Rest, Alert,
|
||||||
@@ -26,7 +26,7 @@ export default
|
|||||||
ParseTypeChange, Wait, selectedLabels, i18n,
|
ParseTypeChange, Wait, selectedLabels, i18n,
|
||||||
Empty, Prompt, ToJSON, GetChoices, CallbackHelpInit, InitiatePlaybookRun, SurveyControllerInit, $state,
|
Empty, Prompt, ToJSON, GetChoices, CallbackHelpInit, InitiatePlaybookRun, SurveyControllerInit, $state,
|
||||||
CreateSelect2, ToggleNotification, $q, InstanceGroupsService, InstanceGroupsData, MultiCredentialService, availableLabels,
|
CreateSelect2, ToggleNotification, $q, InstanceGroupsService, InstanceGroupsData, MultiCredentialService, availableLabels,
|
||||||
canChangeProject, canChangeInventory, jobTemplateData, ParseVariableString
|
canGetProject, canGetInventory, jobTemplateData, ParseVariableString
|
||||||
) {
|
) {
|
||||||
|
|
||||||
$scope.$watch('job_template_obj.summary_fields.user_capabilities.edit', function(val) {
|
$scope.$watch('job_template_obj.summary_fields.user_capabilities.edit', function(val) {
|
||||||
@@ -60,8 +60,6 @@ export default
|
|||||||
$scope.surveyTooltip = i18n._('Surveys allow users to be prompted at job launch with a series of questions related to the job. This allows for variables to be defined that affect the playbook run at time of launch.');
|
$scope.surveyTooltip = i18n._('Surveys allow users to be prompted at job launch with a series of questions related to the job. This allows for variables to be defined that affect the playbook run at time of launch.');
|
||||||
$scope.job_tag_options = [];
|
$scope.job_tag_options = [];
|
||||||
$scope.skip_tag_options = [];
|
$scope.skip_tag_options = [];
|
||||||
$scope.canChangeProject = canChangeProject;
|
|
||||||
$scope.canChangeInventory = canChangeInventory;
|
|
||||||
|
|
||||||
SurveyControllerInit({
|
SurveyControllerInit({
|
||||||
scope: $scope,
|
scope: $scope,
|
||||||
@@ -361,7 +359,8 @@ export default
|
|||||||
if($scope.job_template_obj.summary_fields.user_capabilities.edit) {
|
if($scope.job_template_obj.summary_fields.user_capabilities.edit) {
|
||||||
MultiCredentialService.loadCredentials(jobTemplateData)
|
MultiCredentialService.loadCredentials(jobTemplateData)
|
||||||
.then(([selectedCredentials, credTypes, credTypeOptions,
|
.then(([selectedCredentials, credTypes, credTypeOptions,
|
||||||
credTags]) => {
|
credTags, credentialGetPermissionDenied]) => {
|
||||||
|
$scope.canGetAllRelatedResources = canGetProject && canGetInventory && !credentialGetPermissionDenied ? true : false;
|
||||||
$scope.selectedCredentials = selectedCredentials;
|
$scope.selectedCredentials = selectedCredentials;
|
||||||
$scope.credential_types = credTypes;
|
$scope.credential_types = credTypes;
|
||||||
$scope.credentialTypeOptions = credTypeOptions;
|
$scope.credentialTypeOptions = credTypeOptions;
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ function(NotificationsList, CompletedJobsList, i18n) {
|
|||||||
ngChange: 'job_template_form.inventory_name.$validate()',
|
ngChange: 'job_template_form.inventory_name.$validate()',
|
||||||
text: i18n._('Prompt on launch')
|
text: i18n._('Prompt on launch')
|
||||||
},
|
},
|
||||||
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canChangeInventory'
|
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canGetAllRelatedResources'
|
||||||
},
|
},
|
||||||
project: {
|
project: {
|
||||||
label: i18n._('Project'),
|
label: i18n._('Project'),
|
||||||
@@ -100,14 +100,14 @@ function(NotificationsList, CompletedJobsList, i18n) {
|
|||||||
dataTitle: i18n._('Project'),
|
dataTitle: i18n._('Project'),
|
||||||
dataPlacement: 'right',
|
dataPlacement: 'right',
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canChangeProject',
|
ngDisabled: '!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canGetAllRelatedResources',
|
||||||
awLookupWhen: 'canChangeProject'
|
awLookupWhen: 'canGetAllRelatedResources'
|
||||||
},
|
},
|
||||||
playbook: {
|
playbook: {
|
||||||
label: i18n._('Playbook'),
|
label: i18n._('Playbook'),
|
||||||
type:'select',
|
type:'select',
|
||||||
ngOptions: 'book for book in playbook_options track by book',
|
ngOptions: 'book for book in playbook_options track by book',
|
||||||
ngDisabled: "!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canChangeProject",
|
ngDisabled: "!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canGetAllRelatedResources",
|
||||||
id: 'playbook-select',
|
id: 'playbook-select',
|
||||||
required: true,
|
required: true,
|
||||||
column: 1,
|
column: 1,
|
||||||
|
|||||||
@@ -179,6 +179,8 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
|
|
||||||
let credDefers = [];
|
let credDefers = [];
|
||||||
let job_template_obj = data;
|
let job_template_obj = data;
|
||||||
|
let credentialGetPermissionDenied = false;
|
||||||
|
|
||||||
// get machine credential
|
// get machine credential
|
||||||
if (data.related.credential) {
|
if (data.related.credential) {
|
||||||
Rest.setUrl(data.related.credential);
|
Rest.setUrl(data.related.credential);
|
||||||
@@ -189,6 +191,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
.catch(({data, status}) => {
|
.catch(({data, status}) => {
|
||||||
if (status === 403) {
|
if (status === 403) {
|
||||||
/* User doesn't have read access to the machine credential, so use summary_fields */
|
/* User doesn't have read access to the machine credential, so use summary_fields */
|
||||||
|
credentialGetPermissionDenied = true;
|
||||||
selectedCredentials.machine = job_template_obj.summary_fields.credential;
|
selectedCredentials.machine = job_template_obj.summary_fields.credential;
|
||||||
selectedCredentials.machine.credential_type = job_template_obj.summary_fields.credential.credential_type_id;
|
selectedCredentials.machine.credential_type = job_template_obj.summary_fields.credential.credential_type_id;
|
||||||
selectedCredentials.machine.readOnly = true;
|
selectedCredentials.machine.readOnly = true;
|
||||||
@@ -214,6 +217,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
.catch(({data, status}) => {
|
.catch(({data, status}) => {
|
||||||
if (status === 403) {
|
if (status === 403) {
|
||||||
/* User doesn't have read access to the vault credential, so use summary_fields */
|
/* User doesn't have read access to the vault credential, so use summary_fields */
|
||||||
|
credentialGetPermissionDenied = true;
|
||||||
selectedCredentials.vault = job_template_obj.summary_fields.vault_credential;
|
selectedCredentials.vault = job_template_obj.summary_fields.vault_credential;
|
||||||
selectedCredentials.vault.credential_type = job_template_obj.summary_fields.vault_credential.credential_type_id;
|
selectedCredentials.vault.credential_type = job_template_obj.summary_fields.vault_credential.credential_type_id;
|
||||||
selectedCredentials.vault.readOnly = true;
|
selectedCredentials.vault.readOnly = true;
|
||||||
@@ -240,6 +244,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
.catch(({data, status}) => {
|
.catch(({data, status}) => {
|
||||||
if (status === 403) {
|
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 extra credentials, so use summary_fields */
|
||||||
|
credentialGetPermissionDenied = true;
|
||||||
selectedCredentials.extra = job_template_obj.summary_fields.extra_credentials;
|
selectedCredentials.extra = job_template_obj.summary_fields.extra_credentials;
|
||||||
_.map(selectedCredentials.extra, (cred) => {
|
_.map(selectedCredentials.extra, (cred) => {
|
||||||
cred.credential_type = cred.credential_type_id;
|
cred.credential_type = cred.credential_type_id;
|
||||||
@@ -271,7 +276,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
.updateCredentialTags(selectedCredentials, credTypeOptions);
|
.updateCredentialTags(selectedCredentials, credTypeOptions);
|
||||||
|
|
||||||
return [selectedCredentials, credTypes, credTypeOptions,
|
return [selectedCredentials, credTypes, credTypeOptions,
|
||||||
credTags];
|
credTags, credentialGetPermissionDenied];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}],
|
}],
|
||||||
canChangeProject: ['Rest', 'ProcessErrors', 'jobTemplateData',
|
canGetProject: ['Rest', 'ProcessErrors', 'jobTemplateData',
|
||||||
function(Rest, ProcessErrors, jobTemplateData) {
|
function(Rest, ProcessErrors, jobTemplateData) {
|
||||||
Rest.setUrl(jobTemplateData.related.project);
|
Rest.setUrl(jobTemplateData.related.project);
|
||||||
return Rest.get()
|
return Rest.get()
|
||||||
@@ -171,7 +171,7 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
}],
|
}],
|
||||||
canChangeInventory: ['Rest', 'ProcessErrors', 'jobTemplateData',
|
canGetInventory: ['Rest', 'ProcessErrors', 'jobTemplateData',
|
||||||
function(Rest, ProcessErrors, jobTemplateData) {
|
function(Rest, ProcessErrors, jobTemplateData) {
|
||||||
Rest.setUrl(jobTemplateData.related.inventory);
|
Rest.setUrl(jobTemplateData.related.inventory);
|
||||||
return Rest.get()
|
return Rest.get()
|
||||||
|
|||||||
Reference in New Issue
Block a user