mirror of
https://github.com/ansible/awx.git
synced 2026-03-02 09:18:48 -03:30
Fixed error showing vault password prompts on relaunch
This commit is contained in:
@@ -33,11 +33,12 @@ function atRelaunchCtrl (
|
|||||||
) {
|
) {
|
||||||
const jobPromises = [
|
const jobPromises = [
|
||||||
jobObj.request('get', vm.job.id),
|
jobObj.request('get', vm.job.id),
|
||||||
jobTemplate.optionsLaunch(vm.job.unified_job_template)
|
jobTemplate.optionsLaunch(vm.job.unified_job_template),
|
||||||
|
jobObj.getCredentials(vm.job.id)
|
||||||
];
|
];
|
||||||
|
|
||||||
$q.all(jobPromises)
|
$q.all(jobPromises)
|
||||||
.then(([jobRes, launchOptions]) => {
|
.then(([jobRes, launchOptions, jobCreds]) => {
|
||||||
const populatedJob = jobRes.data;
|
const populatedJob = jobRes.data;
|
||||||
const jobTypeChoices = _.get(
|
const jobTypeChoices = _.get(
|
||||||
launchOptions,
|
launchOptions,
|
||||||
@@ -68,7 +69,11 @@ function atRelaunchCtrl (
|
|||||||
relaunchHostType: option ? (option.name).toLowerCase() : null,
|
relaunchHostType: option ? (option.name).toLowerCase() : null,
|
||||||
prompts: {
|
prompts: {
|
||||||
credentials: {
|
credentials: {
|
||||||
value: populatedJob.summary_fields.credentials || []
|
value: populatedJob.summary_fields.credentials ?
|
||||||
|
_.merge(
|
||||||
|
jobCreds.data.results,
|
||||||
|
populatedJob.summary_fields.credentials
|
||||||
|
) : []
|
||||||
},
|
},
|
||||||
variables: {
|
variables: {
|
||||||
value: populatedJob.extra_vars
|
value: populatedJob.extra_vars
|
||||||
|
|||||||
@@ -48,6 +48,15 @@ function getStats () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getCredentials (id) {
|
||||||
|
const req = {
|
||||||
|
method: 'GET',
|
||||||
|
url: `${this.path}${id}/credentials/`
|
||||||
|
};
|
||||||
|
|
||||||
|
return $http(req);
|
||||||
|
}
|
||||||
|
|
||||||
function JobModel (method, resource, config) {
|
function JobModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'jobs');
|
BaseModel.call(this, 'jobs');
|
||||||
|
|
||||||
@@ -56,6 +65,7 @@ function JobModel (method, resource, config) {
|
|||||||
this.postRelaunch = postRelaunch.bind(this);
|
this.postRelaunch = postRelaunch.bind(this);
|
||||||
this.getRelaunch = getRelaunch.bind(this);
|
this.getRelaunch = getRelaunch.bind(this);
|
||||||
this.getStats = getStats.bind(this);
|
this.getStats = getStats.bind(this);
|
||||||
|
this.getCredentials = getCredentials.bind(this);
|
||||||
|
|
||||||
return this.create(method, resource, config);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,10 +56,12 @@ export default [ 'Rest', 'GetBasePath', 'ProcessErrors', 'CredentialTypeModel',
|
|||||||
.then( (response) => {
|
.then( (response) => {
|
||||||
vm.promptDataClone.prompts.credentials.credentialTypes = {};
|
vm.promptDataClone.prompts.credentials.credentialTypes = {};
|
||||||
vm.promptDataClone.prompts.credentials.credentialTypeOptions = [];
|
vm.promptDataClone.prompts.credentials.credentialTypeOptions = [];
|
||||||
|
let machineCredTypeId = null;
|
||||||
response.data.results.forEach((credentialTypeRow => {
|
response.data.results.forEach((credentialTypeRow => {
|
||||||
vm.promptDataClone.prompts.credentials.credentialTypes[credentialTypeRow.id] = credentialTypeRow.kind;
|
vm.promptDataClone.prompts.credentials.credentialTypes[credentialTypeRow.id] = credentialTypeRow.kind;
|
||||||
if(credentialTypeRow.kind.match(/^(cloud|net|ssh|vault)$/)) {
|
if(credentialTypeRow.kind.match(/^(cloud|net|ssh|vault)$/)) {
|
||||||
if(credentialTypeRow.kind === 'ssh') {
|
if(credentialTypeRow.kind === 'ssh') {
|
||||||
|
machineCredTypeId = credentialTypeRow.id;
|
||||||
vm.promptDataClone.prompts.credentials.credentialKind = credentialTypeRow.id.toString();
|
vm.promptDataClone.prompts.credentials.credentialKind = credentialTypeRow.id.toString();
|
||||||
}
|
}
|
||||||
vm.promptDataClone.prompts.credentials.credentialTypeOptions.push({
|
vm.promptDataClone.prompts.credentials.credentialTypeOptions.push({
|
||||||
@@ -72,40 +74,33 @@ export default [ 'Rest', 'GetBasePath', 'ProcessErrors', 'CredentialTypeModel',
|
|||||||
vm.promptDataClone.prompts.credentials.passwords = {};
|
vm.promptDataClone.prompts.credentials.passwords = {};
|
||||||
|
|
||||||
if(vm.promptDataClone.launchConf.passwords_needed_to_start) {
|
if(vm.promptDataClone.launchConf.passwords_needed_to_start) {
|
||||||
|
let machineCredPassObj = null;
|
||||||
vm.promptDataClone.launchConf.passwords_needed_to_start.forEach((passwordNeeded) => {
|
vm.promptDataClone.launchConf.passwords_needed_to_start.forEach((passwordNeeded) => {
|
||||||
if (passwordNeeded === "ssh_password") {
|
if (passwordNeeded === "ssh_password" ||
|
||||||
vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => {
|
passwordNeeded === "become_password" ||
|
||||||
defaultCredential.passwords_needed.forEach((neededPassword) => {
|
passwordNeeded === "ssh_key_unlock"
|
||||||
if (neededPassword === "ssh_password") {
|
) {
|
||||||
vm.promptDataClone.prompts.credentials.passwords.ssh = {
|
if (!machineCredPassObj) {
|
||||||
|
vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => {
|
||||||
|
if (defaultCredential.kind && defaultCredential.kind === "ssh") {
|
||||||
|
machineCredPassObj = {
|
||||||
id: defaultCredential.id,
|
id: defaultCredential.id,
|
||||||
name: defaultCredential.name
|
name: defaultCredential.name
|
||||||
};
|
};
|
||||||
|
} else if (defaultCredential.passwords_needed) {
|
||||||
|
defaultCredential.passwords_needed.forEach((neededPassword) => {
|
||||||
|
if (neededPassword === passwordNeeded) {
|
||||||
|
machineCredPassObj = {
|
||||||
|
id: defaultCredential.id,
|
||||||
|
name: defaultCredential.name
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
} else if (passwordNeeded === "become_password") {
|
|
||||||
vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => {
|
vm.promptDataClone.prompts.credentials.passwords[passwordNeeded] = angular.copy(machineCredPassObj);
|
||||||
defaultCredential.passwords_needed.forEach((neededPassword) => {
|
|
||||||
if (neededPassword === "become_password") {
|
|
||||||
vm.promptDataClone.prompts.credentials.passwords.become = {
|
|
||||||
id: defaultCredential.id,
|
|
||||||
name: defaultCredential.name
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else if (passwordNeeded === "ssh_key_unlock") {
|
|
||||||
vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => {
|
|
||||||
defaultCredential.passwords_needed.forEach((neededPassword) => {
|
|
||||||
if (neededPassword === "ssh_key_unlock") {
|
|
||||||
vm.promptDataClone.prompts.credentials.passwords.ssh_key_unlock = {
|
|
||||||
id: defaultCredential.id,
|
|
||||||
name: defaultCredential.name
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else if (passwordNeeded.startsWith("vault_password")) {
|
} else if (passwordNeeded.startsWith("vault_password")) {
|
||||||
let vault_id = null;
|
let vault_id = null;
|
||||||
if (passwordNeeded.includes('.')) {
|
if (passwordNeeded.includes('.')) {
|
||||||
@@ -119,12 +114,15 @@ export default [ 'Rest', 'GetBasePath', 'ProcessErrors', 'CredentialTypeModel',
|
|||||||
// Loop across the default credentials to find the name of the
|
// Loop across the default credentials to find the name of the
|
||||||
// credential that requires a password
|
// credential that requires a password
|
||||||
vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => {
|
vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => {
|
||||||
if (defaultCredential.vault_id === vault_id) {
|
if (vm.promptDataClone.prompts.credentials.credentialTypes[defaultCredential.credential_type] === "vault") {
|
||||||
vm.promptDataClone.prompts.credentials.passwords.vault.push({
|
let defaultCredVaultId = defaultCredential.vault_id || _.get(defaultCredential, 'inputs.vault_id') || null;
|
||||||
id: defaultCredential.id,
|
if (defaultCredVaultId === vault_id) {
|
||||||
name: defaultCredential.name,
|
vm.promptDataClone.prompts.credentials.passwords.vault.push({
|
||||||
vault_id: defaultCredential.vault_id
|
id: defaultCredential.id,
|
||||||
});
|
name: defaultCredential.name,
|
||||||
|
vault_id: defaultCredVaultId
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<button class="Prompt-actionButton"
|
<button class="Prompt-actionButton"
|
||||||
ng-show="vm.steps.credential.tab._active"
|
ng-show="vm.steps.credential.tab._active"
|
||||||
ng-click="vm.next(vm.steps.credential.tab)"
|
ng-click="vm.next(vm.steps.credential.tab)"
|
||||||
ng-disabled="(preventCredsWithPasswords && (vm.promptDataClone.prompts.credentials.passwords.ssh || vm.promptDataClone.prompts.credentials.passwords.become || vm.promptDataClone.prompts.credentials.passwords.ssh_key_unlock || (vm.promptDataClone.prompts.credentials.passwords.vault && vm.promptDataClone.prompts.credentials.passwords.vault.length > 0))) ||
|
ng-disabled="(preventCredsWithPasswords && (vm.promptDataClone.prompts.credentials.passwords.ssh_password || vm.promptDataClone.prompts.credentials.passwords.become_password || vm.promptDataClone.prompts.credentials.passwords.ssh_key_unlock || (vm.promptDataClone.prompts.credentials.passwords.vault && vm.promptDataClone.prompts.credentials.passwords.vault.length > 0))) ||
|
||||||
!vm.forms.credentialPasswords.$valid ||
|
!vm.forms.credentialPasswords.$valid ||
|
||||||
(vm.promptData.credentialTypeMissing && vm.promptData.credentialTypeMissing.length > 0)">{{:: vm.strings.get('NEXT') }}</button>
|
(vm.promptData.credentialTypeMissing && vm.promptData.credentialTypeMissing.length > 0)">{{:: vm.strings.get('NEXT') }}</button>
|
||||||
<button class="Prompt-actionButton" ng-show="vm.steps.other_prompts.tab._active" ng-click="vm.next(vm.steps.other_prompts.tab)" ng-disabled="!vm.forms.otherPrompts.$valid">{{:: vm.strings.get('NEXT') }}</button>
|
<button class="Prompt-actionButton" ng-show="vm.steps.other_prompts.tab._active" ng-click="vm.next(vm.steps.other_prompts.tab)" ng-disabled="!vm.forms.otherPrompts.$valid">{{:: vm.strings.get('NEXT') }}</button>
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ function PromptService (Empty, $filter) {
|
|||||||
if (key === "ssh_key_unlock") {
|
if (key === "ssh_key_unlock") {
|
||||||
launchData.credential_passwords.ssh_key_unlock = val.value;
|
launchData.credential_passwords.ssh_key_unlock = val.value;
|
||||||
} else if (key !== "vault") {
|
} else if (key !== "vault") {
|
||||||
launchData.credential_passwords[`${key}_password`] = val.value;
|
launchData.credential_passwords[`${key}`] = val.value;
|
||||||
} else {
|
} else {
|
||||||
_.each(val, (vaultCred) => {
|
_.each(val, (vaultCred) => {
|
||||||
launchData.credential_passwords[vaultCred.vault_id ? `${key}_password.${vaultCred.vault_id}` : `${key}_password`] = vaultCred.value;
|
launchData.credential_passwords[vaultCred.vault_id ? `${key}_password.${vaultCred.vault_id}` : `${key}_password`] = vaultCred.value;
|
||||||
@@ -198,7 +198,7 @@ function PromptService (Empty, $filter) {
|
|||||||
if (key === "ssh_key_unlock") {
|
if (key === "ssh_key_unlock") {
|
||||||
launchData.credential_passwords.ssh_key_unlock = val.value;
|
launchData.credential_passwords.ssh_key_unlock = val.value;
|
||||||
} else if (key !== "vault") {
|
} else if (key !== "vault") {
|
||||||
launchData.credential_passwords[`${key}_password`] = val.value;
|
launchData.credential_passwords[`${key}`] = val.value;
|
||||||
} else {
|
} else {
|
||||||
_.each(val, (vaultCred) => {
|
_.each(val, (vaultCred) => {
|
||||||
launchData.credential_passwords[vaultCred.vault_id ? `${key}_password.${vaultCred.vault_id}` : `${key}_password`] = vaultCred.value;
|
launchData.credential_passwords[vaultCred.vault_id ? `${key}_password.${vaultCred.vault_id}` : `${key}_password`] = vaultCred.value;
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ export default
|
|||||||
if(cred.passwords_needed) {
|
if(cred.passwords_needed) {
|
||||||
cred.passwords_needed.forEach((passwordNeeded => {
|
cred.passwords_needed.forEach((passwordNeeded => {
|
||||||
if(passwordNeeded === 'ssh_password') {
|
if(passwordNeeded === 'ssh_password') {
|
||||||
delete scope.promptData.prompts.credentials.passwords.ssh;
|
delete scope.promptData.prompts.credentials.passwords.ssh_password;
|
||||||
} else if(passwordNeeded === 'become_password') {
|
} else if(passwordNeeded === 'become_password') {
|
||||||
delete scope.promptData.prompts.credentials.passwords.become;
|
delete scope.promptData.prompts.credentials.passwords.become_password;
|
||||||
} else if(passwordNeeded === 'ssh_key_unlock') {
|
} else if(passwordNeeded === 'ssh_key_unlock') {
|
||||||
delete scope.promptData.prompts.credentials.passwords.ssh_key_unlock;
|
delete scope.promptData.prompts.credentials.passwords.ssh_key_unlock;
|
||||||
} else if(passwordNeeded.startsWith("vault_password")) {
|
} else if(passwordNeeded.startsWith("vault_password")) {
|
||||||
@@ -50,10 +50,10 @@ export default
|
|||||||
}));
|
}));
|
||||||
} else if(cred.inputs && !_.isEmpty(cred.inputs)) {
|
} else if(cred.inputs && !_.isEmpty(cred.inputs)) {
|
||||||
if(cred.inputs.password && cred.inputs.password === "ASK") {
|
if(cred.inputs.password && cred.inputs.password === "ASK") {
|
||||||
delete scope.promptData.prompts.credentials.passwords.ssh;
|
delete scope.promptData.prompts.credentials.passwords.ssh_password;
|
||||||
}
|
}
|
||||||
if(cred.inputs.become_password && cred.inputs.become_password === "ASK") {
|
if(cred.inputs.become_password && cred.inputs.become_password === "ASK") {
|
||||||
delete scope.promptData.prompts.credentials.passwords.become;
|
delete scope.promptData.prompts.credentials.passwords.become_password;
|
||||||
}
|
}
|
||||||
if(cred.inputs.ssh_key_unlock && cred.inputs.ssh_key_unlock === "ASK") {
|
if(cred.inputs.ssh_key_unlock && cred.inputs.ssh_key_unlock === "ASK") {
|
||||||
delete scope.promptData.prompts.credentials.passwords.ssh_key_unlock;
|
delete scope.promptData.prompts.credentials.passwords.ssh_key_unlock;
|
||||||
@@ -72,13 +72,13 @@ export default
|
|||||||
let updateNeededPasswords = (cred) => {
|
let updateNeededPasswords = (cred) => {
|
||||||
if(cred.inputs) {
|
if(cred.inputs) {
|
||||||
if(cred.inputs.password && cred.inputs.password === "ASK") {
|
if(cred.inputs.password && cred.inputs.password === "ASK") {
|
||||||
scope.promptData.prompts.credentials.passwords.ssh = {
|
scope.promptData.prompts.credentials.passwords.ssh_password = {
|
||||||
id: cred.id,
|
id: cred.id,
|
||||||
name: cred.name
|
name: cred.name
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if(cred.inputs.become_password && cred.inputs.become_password === "ASK") {
|
if(cred.inputs.become_password && cred.inputs.become_password === "ASK") {
|
||||||
scope.promptData.prompts.credentials.passwords.become = {
|
scope.promptData.prompts.credentials.passwords.become_password = {
|
||||||
id: cred.id,
|
id: cred.id,
|
||||||
name: cred.name
|
name: cred.name
|
||||||
};
|
};
|
||||||
@@ -291,10 +291,10 @@ export default
|
|||||||
};
|
};
|
||||||
|
|
||||||
if(passwordNeeded === "ssh_password") {
|
if(passwordNeeded === "ssh_password") {
|
||||||
scope.promptData.prompts.credentials.passwords.ssh = credPassObj;
|
scope.promptData.prompts.credentials.passwords.ssh_password = credPassObj;
|
||||||
}
|
}
|
||||||
if(passwordNeeded === "become_password") {
|
if(passwordNeeded === "become_password") {
|
||||||
scope.promptData.prompts.credentials.passwords.become = credPassObj;
|
scope.promptData.prompts.credentials.passwords.become_password = credPassObj;
|
||||||
}
|
}
|
||||||
if(passwordNeeded === "ssh_key_unlock") {
|
if(passwordNeeded === "ssh_key_unlock") {
|
||||||
scope.promptData.prompts.credentials.passwords.ssh_key_unlock = credPassObj;
|
scope.promptData.prompts.credentials.passwords.ssh_key_unlock = credPassObj;
|
||||||
|
|||||||
@@ -45,13 +45,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span>
|
<span>
|
||||||
<div ng-if="preventCredsWithPasswords && (promptData.prompts.credentials.passwords.ssh || promptData.prompts.credentials.passwords.become || promptData.prompts.credentials.passwords.ssh_key_unlock || (promptData.prompts.credentials.passwords.vault && promptData.prompts.credentials.passwords.vault.length > 0))">
|
<div ng-if="preventCredsWithPasswords && (promptData.prompts.credentials.passwords.ssh_password || promptData.prompts.credentials.passwords.become_password || promptData.prompts.credentials.passwords.ssh_key_unlock || (promptData.prompts.credentials.passwords.vault && promptData.prompts.credentials.passwords.vault.length > 0))">
|
||||||
<div class="Prompt-credsWarning">
|
<div class="Prompt-credsWarning">
|
||||||
<span class="fa fa-warning"></span>
|
<span class="fa fa-warning"></span>
|
||||||
<span>{{ vm.strings.get('prompt.CREDENTIAL_PASSWORD_WARNING')}}</span>
|
<span>{{ vm.strings.get('prompt.CREDENTIAL_PASSWORD_WARNING')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="Prompt-credsWarningList">
|
<div class="Prompt-credsWarningList">
|
||||||
<div ng-if="promptData.prompts.credentials.passwords.ssh || promptData.prompts.credentials.passwords.become || promptData.prompts.credentials.passwords.ssh_key_unlock">{{promptData.prompts.credentials.passwords.ssh.name || promptData.prompts.credentials.passwords.become.name || promptData.prompts.credentials.passwords.ssh_key_unlock.name}}</div>
|
<div ng-if="promptData.prompts.credentials.passwords.ssh_password || promptData.prompts.credentials.passwords.become_password || promptData.prompts.credentials.passwords.ssh_key_unlock">{{promptData.prompts.credentials.passwords.ssh_password.name || promptData.prompts.credentials.passwords.become_password.name || promptData.prompts.credentials.passwords.ssh_key_unlock.name}}</div>
|
||||||
<div ng-if="promptData.prompts.credentials.passwords.vault && promptData.prompts.credentials.passwords.vault.length > 0" ng-repeat="vaultCred in promptData.prompts.credentials.passwords.vault">{{vaultCred.name}}</div>
|
<div ng-if="promptData.prompts.credentials.passwords.vault && promptData.prompts.credentials.passwords.vault.length > 0" ng-repeat="vaultCred in promptData.prompts.credentials.passwords.vault">{{vaultCred.name}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -65,10 +65,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="prompt-credential"></div>
|
<div id="prompt-credential"></div>
|
||||||
</span>
|
</span>
|
||||||
<div ng-show="!preventCredsWithPasswords && (promptData.prompts.credentials.passwords.ssh || promptData.prompts.credentials.passwords.become || promptData.prompts.credentials.passwords.ssh_key_unlock || (promptData.prompts.credentials.passwords.vault && promptData.prompts.credentials.passwords.vault.length > 0))">
|
<div ng-show="!preventCredsWithPasswords && (promptData.prompts.credentials.passwords.ssh_password || promptData.prompts.credentials.passwords.become_password || promptData.prompts.credentials.passwords.ssh_key_unlock || (promptData.prompts.credentials.passwords.vault && promptData.prompts.credentials.passwords.vault.length > 0))">
|
||||||
<div class="Prompt-instructions">{{:: vm.strings.get('prompt.PASSWORDS_REQUIRED_HELP') }}</div>
|
<div class="Prompt-instructions">{{:: vm.strings.get('prompt.PASSWORDS_REQUIRED_HELP') }}</div>
|
||||||
<form name="credentialPasswordsForm" autocomplete="off" novalidate>
|
<form name="credentialPasswordsForm" autocomplete="off" novalidate>
|
||||||
<div class="form-group Form-formGroup Form-formGroup--singleColumn" ng-if="promptData.prompts.credentials.passwords.ssh">
|
<div class="form-group Form-formGroup Form-formGroup--singleColumn" ng-if="promptData.prompts.credentials.passwords.ssh_password">
|
||||||
<label for="ssh_password" class="Form-inputLabelContainer">
|
<label for="ssh_password" class="Form-inputLabelContainer">
|
||||||
<span class="Form-requiredAsterisk">*</span>
|
<span class="Form-requiredAsterisk">*</span>
|
||||||
<span class="Form-inputLabel">{{:: vm.strings.get('prompt.credential_passwords.SSH_PASSWORD') }}</span>
|
<span class="Form-inputLabel">{{:: vm.strings.get('prompt.credential_passwords.SSH_PASSWORD') }}</span>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button type="button" class="btn btn-default show_input_button Prompt-passwordButton" id="prompt-ssh-password_show_input_button" aw-tool-tip="Toggle the display of plaintext." aw-tip-placement="top" ng-click="vm.togglePassword('#prompt-ssh-password')" data-container="job-launch-modal" data-original-title="" title="">{{:: vm.strings.get('SHOW') }}</button>
|
<button type="button" class="btn btn-default show_input_button Prompt-passwordButton" id="prompt-ssh-password_show_input_button" aw-tool-tip="Toggle the display of plaintext." aw-tip-placement="top" ng-click="vm.togglePassword('#prompt-ssh-password')" data-container="job-launch-modal" data-original-title="" title="">{{:: vm.strings.get('SHOW') }}</button>
|
||||||
</span>
|
</span>
|
||||||
<input id="prompt-ssh-password" type="password" ng-model="promptData.prompts.credentials.passwords.ssh.value" name="ssh_password" class="password-field form-control input-sm Form-textInput" required>
|
<input id="prompt-ssh-password" type="password" ng-model="promptData.prompts.credentials.passwords.ssh_password.value" name="ssh_password" class="password-field form-control input-sm Form-textInput" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" ng-show="credentialPasswordsForm.ssh_password.$dirty && credentialPasswordsForm.ssh_password.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
<div class="error" ng-show="credentialPasswordsForm.ssh_password.$dirty && credentialPasswordsForm.ssh_password.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
||||||
<div class="error api-error" ng-bind="ssh_password_api_error"></div>
|
<div class="error api-error" ng-bind="ssh_password_api_error"></div>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
<div class="error" ng-show="credentialPasswordsForm.ssh_key_unlock.$dirty && credentialPasswordsForm.ssh_key_unlock.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
<div class="error" ng-show="credentialPasswordsForm.ssh_key_unlock.$dirty && credentialPasswordsForm.ssh_key_unlock.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
||||||
<div class="error api-error" ng-bind="ssh_key_unlock_api_error"></div>
|
<div class="error api-error" ng-bind="ssh_key_unlock_api_error"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group Form-formGroup Form-formGroup--singleColumn" ng-if="promptData.prompts.credentials.passwords.become">
|
<div class="form-group Form-formGroup Form-formGroup--singleColumn" ng-if="promptData.prompts.credentials.passwords.become_password">
|
||||||
<label for="become_password" class="Form-inputLabelContainer">
|
<label for="become_password" class="Form-inputLabelContainer">
|
||||||
<span class="Form-requiredAsterisk">*</span>
|
<span class="Form-requiredAsterisk">*</span>
|
||||||
<span class="Form-inputLabel">{{:: vm.strings.get('prompt.credential_passwords.PRIVILEGE_ESCALATION_PASSWORD') }}</span>
|
<span class="Form-inputLabel">{{:: vm.strings.get('prompt.credential_passwords.PRIVILEGE_ESCALATION_PASSWORD') }}</span>
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button type="button" class="btn btn-default show_input_button Prompt-passwordButton" id="prompt-become-password_show_input_button" aw-tool-tip="Toggle the display of plaintext." aw-tip-placement="top" ng-click="vm.togglePassword('#prompt-become-password')" data-container="job-launch-modal" data-original-title="" title="">{{:: vm.strings.get('SHOW') }}</button>
|
<button type="button" class="btn btn-default show_input_button Prompt-passwordButton" id="prompt-become-password_show_input_button" aw-tool-tip="Toggle the display of plaintext." aw-tip-placement="top" ng-click="vm.togglePassword('#prompt-become-password')" data-container="job-launch-modal" data-original-title="" title="">{{:: vm.strings.get('SHOW') }}</button>
|
||||||
</span>
|
</span>
|
||||||
<input id="prompt-become-password" type="password" ng-model="promptData.prompts.credentials.passwords.become.value" name="become_password" class="password-field form-control input-sm Form-textInput" required>
|
<input id="prompt-become-password" type="password" ng-model="promptData.prompts.credentials.passwords.become_password.value" name="become_password" class="password-field form-control input-sm Form-textInput" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" ng-show="credentialPasswordsForm.become_password.$dirty && credentialPasswordsForm.become_password.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
<div class="error" ng-show="credentialPasswordsForm.become_password.$dirty && credentialPasswordsForm.become_password.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
||||||
<div class="error api-error" ng-bind="become_password_api_error"></div>
|
<div class="error api-error" ng-bind="become_password_api_error"></div>
|
||||||
@@ -118,9 +118,9 @@
|
|||||||
</label>
|
</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button type="button" class="btn btn-default show_input_button Prompt-passwordButton" id="prompt-vault-password_show_input_button" aw-tool-tip="Toggle the display of plaintext." aw-tip-placement="top" ng-click="vm.togglePassword('#prompt-vault-password')" data-container="job-launch-modal" data-original-title="" title="">{{:: vm.strings.get('SHOW') }}</button>
|
<button type="button" class="btn btn-default show_input_button Prompt-passwordButton" ng-attr-id="{{ 'prompt-vault-password_show_input_button-' + $index }}" aw-tool-tip="Toggle the display of plaintext." aw-tip-placement="top" ng-click="vm.togglePassword('#prompt-vault-password')" data-container="job-launch-modal" data-original-title="" title="">{{:: vm.strings.get('SHOW') }}</button>
|
||||||
</span>
|
</span>
|
||||||
<input id="prompt-vault-password" type="password" ng-model="promptData.prompts.credentials.passwords.vault[$index].value" name="vault_password" class="password-field form-control input-sm Form-textInput" required>
|
<input ng-attr-id="{{ 'prompt-vault-password-' + $index }}" type="password" ng-model="promptData.prompts.credentials.passwords.vault[$index].value" name="vault_password" class="password-field form-control input-sm Form-textInput" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" ng-show="credentialPasswordsForm.vault_password.$dirty && credentialPasswordsForm.vault_password.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
<div class="error" ng-show="credentialPasswordsForm.vault_password.$dirty && credentialPasswordsForm.vault_password.$error.required">{{:: vm.strings.get('prompt.PLEASE_ENTER_PASSWORD') }}</div>
|
||||||
<div class="error api-error" ng-bind="vault_password_api_error"></div>
|
<div class="error api-error" ng-bind="vault_password_api_error"></div>
|
||||||
|
|||||||
Reference in New Issue
Block a user