1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-09-15 02:18:42 +02:00

skip autofill username option

This commit is contained in:
Kyle Spearrin 2017-10-07 13:10:04 -04:00
parent ad66d15a33
commit 7561ae4996
3 changed files with 34 additions and 18 deletions

View File

@ -734,7 +734,11 @@ var bg_isBackground = true,
} }
function autofillPage() { function autofillPage() {
bg_autofillService.doAutoFill(loginToAutoFill, pageDetailsToAutoFill, true); bg_autofillService.doAutoFill({
login: loginToAutoFill,
pageDetails: pageDetailsToAutoFill,
fromBackground: true
});
// reset // reset
loginToAutoFill = null; loginToAutoFill = null;
pageDetailsToAutoFill = []; pageDetailsToAutoFill = [];

View File

@ -74,7 +74,11 @@ angular
toastr.error(i18nService.autofillError); toastr.error(i18nService.autofillError);
} }
autofillService.doAutoFill(login, pageDetails, false).then(function (totpCode) { autofillService.doAutoFill({
login: login,
pageDetails: pageDetails,
fromBackground: false
}).then(function (totpCode) {
$analytics.eventTrack('Autofilled'); $analytics.eventTrack('Autofilled');
if (totpCode && utilsService.isFirefox()) { if (totpCode && utilsService.isFirefox()) {
utilsService.copyToClipboard(totpCode, document); utilsService.copyToClipboard(totpCode, document);

View File

@ -121,7 +121,7 @@ function initAutofill() {
} }
} }
if (!passwordFields.length) { if (!passwordFields.length && !fill.skipUsernameOnlyFill) {
// No password fields on this page. Let's try to just fuzzy fill the username. // No password fields on this page. Let's try to just fuzzy fill the username.
for (i = 0; i < pageDetails.fields.length; i++) { for (i = 0; i < pageDetails.fields.length; i++) {
var f = pageDetails.fields[i]; var f = pageDetails.fields[i];
@ -186,7 +186,7 @@ function initAutofill() {
return formData; return formData;
}; };
AutofillService.prototype.doAutoFill = function (login, pageDetails, fromBackground, skipTotp, skipLastUsed) { AutofillService.prototype.doAutoFill = function (options) {
var deferred = Q.defer(); var deferred = Q.defer();
var self = this, var self = this,
totpPromise = null; totpPromise = null;
@ -201,22 +201,23 @@ function initAutofill() {
return; return;
} }
if (!tab || !login || !pageDetails || !pageDetails.length) { if (!tab || !options.login || !options.pageDetails || !options.pageDetails.length) {
deferred.reject(); deferred.reject();
return; return;
} }
var didAutofill = false; var didAutofill = false;
for (var i = 0; i < pageDetails.length; i++) { for (var i = 0; i < options.pageDetails.length; i++) {
// make sure we're still on correct tab // make sure we're still on correct tab
if (pageDetails[i].tab.id !== tab.id || pageDetails[i].tab.url !== tab.url) { if (options.pageDetails[i].tab.id !== tab.id || options.pageDetails[i].tab.url !== tab.url) {
continue; continue;
} }
var fillScript = self.generateFillScript(pageDetails[i].details, { var fillScript = self.generateFillScript(options.pageDetails[i].details, {
username: login.username, username: options.login.username,
password: login.password, password: options.login.password,
fields: login.fields fields: options.login.fields,
skipUsernameOnlyFill: options.skipUsernameOnlyFill || false
}); });
if (!fillScript || !fillScript.script || !fillScript.script.length) { if (!fillScript || !fillScript.script || !fillScript.script.length) {
@ -224,24 +225,24 @@ function initAutofill() {
} }
didAutofill = true; didAutofill = true;
if (!skipLastUsed) { if (!options.skipLastUsed) {
self.loginService.updateLastUsedDate(login.id, function () { }); self.loginService.updateLastUsedDate(options.login.id, function () { });
} }
chrome.tabs.sendMessage(tab.id, { chrome.tabs.sendMessage(tab.id, {
command: 'fillForm', command: 'fillForm',
fillScript: fillScript fillScript: fillScript
}, { frameId: pageDetails[i].frameId }); }, { frameId: options.pageDetails[i].frameId });
if (totpPromise || (fromBackground && self.utilsService.isFirefox()) || if (totpPromise || (options.fromBackground && self.utilsService.isFirefox()) ||
skipTotp || !login.totp || !self.tokenService.getPremium()) { options.skipTotp || !options.login.totp || !self.tokenService.getPremium()) {
continue; continue;
} }
totpPromise = self.totpService.isAutoCopyEnabled().then(function (enabled) { totpPromise = self.totpService.isAutoCopyEnabled().then(function (enabled) {
if (enabled) { if (enabled) {
/* jshint ignore:start */ /* jshint ignore:start */
return self.totpService.getCode(login.totp); return self.totpService.getCode(options.login.totp);
/* jshint ignore:end */ /* jshint ignore:end */
} }
@ -298,7 +299,14 @@ function initAutofill() {
return; return;
} }
self.doAutoFill(login, pageDetails, true, true, true); self.doAutoFill({
login: login,
pageDetails: pageDetails,
fromBackground: true,
skipTotp: true,
skipLastUsed: true,
skipUsernameOnlyFill: true
});
}); });
}); });
}; };