mirror of
https://github.com/bitwarden/browser.git
synced 2024-10-06 05:28:51 +02:00
generate autofill script for card
This commit is contained in:
parent
9fe35a9aef
commit
e75fee5278
@ -9,7 +9,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initAutofill() {
|
function initAutofill() {
|
||||||
// Add other languages to this array
|
var cardAttributes = ['autocomplete', 'data-stripe', 'htmlName', 'htmlID'];
|
||||||
|
var identityAttributes = ['autocomplete', 'htmlName', 'htmlID'];
|
||||||
|
|
||||||
|
// Add other languages values
|
||||||
var usernameFieldNames = ['username', 'user name', 'email', 'email address', 'e-mail', 'e-mail address',
|
var usernameFieldNames = ['username', 'user name', 'email', 'email address', 'e-mail', 'e-mail address',
|
||||||
'userid', 'user id'];
|
'userid', 'user id'];
|
||||||
|
|
||||||
@ -216,10 +219,10 @@ function initAutofill() {
|
|||||||
fillScript = generateLoginFillScript(fillScript, pageDetails, filledFields, options);
|
fillScript = generateLoginFillScript(fillScript, pageDetails, filledFields, options);
|
||||||
break;
|
break;
|
||||||
case self.constantsService.cipherType.card:
|
case self.constantsService.cipherType.card:
|
||||||
fillScript = generateLoginFillScript(fillScript, pageDetails, filledFields, options);
|
fillScript = generateCardFillScript(fillScript, pageDetails, filledFields, options);
|
||||||
break;
|
break;
|
||||||
case self.constantsService.cipherType.identity:
|
case self.constantsService.cipherType.identity:
|
||||||
fillScript = generateLoginFillScript(fillScript, pageDetails, filledFields, options);
|
fillScript = generateIdentityFillScript(fillScript, pageDetails, filledFields, options);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
@ -341,7 +344,63 @@ function initAutofill() {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var card = options.cipher.card;
|
var fillFields = {};
|
||||||
|
|
||||||
|
for (var i = 0; i < pageDetails.fields.length; i++) {
|
||||||
|
var f = pageDetails.fields[i];
|
||||||
|
for (var j = 0; j < cardAttributes.length; j++) {
|
||||||
|
var attr = cardAttributes[j];
|
||||||
|
if (f.hasOwnProperty(attr) && f[attr]) {
|
||||||
|
switch (f[attr].toLowerCase()) {
|
||||||
|
case 'cc-name': case 'ccname': case 'cardname': case 'card-name': case 'cardholder':
|
||||||
|
case 'cardholdername': case 'cardholder-name': case 'name':
|
||||||
|
if (!fillFields.cardholderName) {
|
||||||
|
fillFields.cardholderName = f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'cc-number': case 'ccnumber': case 'cardnumber': case 'card-number': case 'number':
|
||||||
|
if (!fillFields.number) {
|
||||||
|
fillFields.number = f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'exp-month': case 'expmonth': case 'ccexpmonth': case 'cc-exp-month': case 'cc-month':
|
||||||
|
case 'ccmonth': case 'card-month': case 'cardmonth':
|
||||||
|
if (!fillFields.expMonth) {
|
||||||
|
fillFields.expMonth = f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'exp-year': case 'expyear': case 'ccexpyear': case 'cc-exp-year': case 'cc-year': case 'ccyear':
|
||||||
|
case 'card-year': case 'cardyear':
|
||||||
|
if (!fillFields.expYear) {
|
||||||
|
fillFields.expYear = f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'cvc': case 'cvv': case 'cvv2': case 'cc-csc': case 'cc-cvv': case 'card-csc': case 'cardcsc':
|
||||||
|
case 'cvd': case 'cid': case 'cvc2': case 'cvn': case 'cvn2':
|
||||||
|
if (!fillFields.code) {
|
||||||
|
fillFields.code = f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'card-type': case 'cc-type': case 'cardtype': case 'cctype':
|
||||||
|
if (!fillFields.brand) {
|
||||||
|
fillFields.brand = f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
makeScriptAction(fillScript, options.cipher.card, fillFields, filledFields, 'cardholderName');
|
||||||
|
makeScriptAction(fillScript, options.cipher.card, fillFields, filledFields, 'number');
|
||||||
|
makeScriptAction(fillScript, options.cipher.card, fillFields, filledFields, 'expMonth');
|
||||||
|
makeScriptAction(fillScript, options.cipher.card, fillFields, filledFields, 'expYear');
|
||||||
|
makeScriptAction(fillScript, options.cipher.card, fillFields, filledFields, 'code');
|
||||||
|
makeScriptAction(fillScript, options.cipher.card, fillFields, filledFields, 'brand');
|
||||||
|
|
||||||
|
return fillScript;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateIdentityFillScript(fillScript, pageDetails, filledFields, options) {
|
function generateIdentityFillScript(fillScript, pageDetails, filledFields, options) {
|
||||||
@ -349,7 +408,20 @@ function initAutofill() {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var id = options.cipher.identity;
|
var id = options.cipher.identity,
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
return fillScript;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function makeScriptAction(fillScript, cipherData, fillFields, filledFields, dataProp, fieldProp) {
|
||||||
|
fieldProp = fieldProp || dataProp;
|
||||||
|
if (cipherData[dataProp] && fillFields[fieldProp]) {
|
||||||
|
filledFields[fillFields[fieldProp].opid] = fillFields[fieldProp];
|
||||||
|
fillScript.script.push(['click_on_opid', fillFields[fieldProp].opid]);
|
||||||
|
fillScript.script.push(['fill_by_opid', fillFields[fieldProp].opid, cipherData[dataProp]]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadPasswordFields(pageDetails, canBeHidden) {
|
function loadPasswordFields(pageDetails, canBeHidden) {
|
||||||
|
Loading…
Reference in New Issue
Block a user