Merge pull request #1843 from bitwarden/totp-copy-page-load-2

Copy TOTP after autofill on page load by default
This commit is contained in:
Thomas Rittson 2021-05-18 06:54:04 +10:00 committed by GitHub
commit fdccc21699
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 3 additions and 33 deletions

2
jslib

@ -1 +1 @@
Subproject commit 306aef73d459dfad8a7a06c32442c9ed2d56922e Subproject commit 8659d0975ddb7dc70c0246b4b9acf81e013cdde3

View File

@ -898,12 +898,6 @@
"enableAutoFillOnPageLoadDesc": { "enableAutoFillOnPageLoadDesc": {
"message": "If a login form is detected, automatically perform an auto-fill when the web page loads." "message": "If a login form is detected, automatically perform an auto-fill when the web page loads."
}, },
"enableAutoTotpCopyOnAutoFill": {
"message": "Automatic TOTP Copy after Page Load"
},
"enableAutoTotpCopyOnAutoFillDesc": {
"message": "If Auto-fill On Page Load is enabled, the TOTP verification code is automatically copied to your clipboard after loading the web page. This is overridden by Disable Automatic TOTP Copy."
},
"experimentalFeature": { "experimentalFeature": {
"message": "This is currently an experimental feature. Use at your own risk." "message": "This is currently an experimental feature. Use at your own risk."
}, },

View File

@ -161,17 +161,5 @@
<b>{{'warning' | i18n}}</b>: {{'experimentalFeature' | i18n}} <b>{{'warning' | i18n}}</b>: {{'experimentalFeature' | i18n}}
</div> </div>
</div> </div>
<div class="box">
<div class="box-content">
<div class="box-content-row box-content-row-checkbox" appBoxRow>
<label for="autoCopyTotp">{{'enableAutoTotpCopyOnAutoFill' | i18n}}</label>
<input id="autoCopyTotp" type="checkbox" (change)="updateAutoTotpCopyOnAutoFill()"
[(ngModel)]="enableAutoTotpCopyOnAutoFill" [disabled]="!enableAutoFillOnPageLoad">
</div>
</div>
<div class="box-footer">
{{'enableAutoTotpCopyOnAutoFillDesc' | i18n}}
</div>
</div>
</ng-container> </ng-container>
</content> </content>

View File

@ -7,7 +7,6 @@ import { UriMatchType } from 'jslib/enums/uriMatchType';
import { I18nService } from 'jslib/abstractions/i18n.service'; import { I18nService } from 'jslib/abstractions/i18n.service';
import { MessagingService } from 'jslib/abstractions/messaging.service'; import { MessagingService } from 'jslib/abstractions/messaging.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { StateService } from 'jslib/abstractions/state.service'; import { StateService } from 'jslib/abstractions/state.service';
import { StorageService } from 'jslib/abstractions/storage.service'; import { StorageService } from 'jslib/abstractions/storage.service';
import { TotpService } from 'jslib/abstractions/totp.service'; import { TotpService } from 'jslib/abstractions/totp.service';
@ -22,7 +21,6 @@ export class OptionsComponent implements OnInit {
disableFavicon = false; disableFavicon = false;
disableBadgeCounter = false; disableBadgeCounter = false;
enableAutoFillOnPageLoad = false; enableAutoFillOnPageLoad = false;
enableAutoTotpCopyOnAutoFill = false;
disableAutoTotpCopy = false; disableAutoTotpCopy = false;
disableContextMenuItem = false; disableContextMenuItem = false;
disableAddLoginNotification = false; disableAddLoginNotification = false;
@ -72,8 +70,6 @@ export class OptionsComponent implements OnInit {
this.enableAutoFillOnPageLoad = await this.storageService.get<boolean>( this.enableAutoFillOnPageLoad = await this.storageService.get<boolean>(
ConstantsService.enableAutoFillOnPageLoadKey); ConstantsService.enableAutoFillOnPageLoadKey);
this.enableAutoTotpCopyOnAutoFill = await this.totpService.isAutoCopyOnAutoFillEnabled();
this.disableAddLoginNotification = await this.storageService.get<boolean>( this.disableAddLoginNotification = await this.storageService.get<boolean>(
ConstantsService.disableAddLoginNotificationKey); ConstantsService.disableAddLoginNotificationKey);
@ -124,10 +120,6 @@ export class OptionsComponent implements OnInit {
await this.storageService.save(ConstantsService.enableAutoFillOnPageLoadKey, this.enableAutoFillOnPageLoad); await this.storageService.save(ConstantsService.enableAutoFillOnPageLoadKey, this.enableAutoFillOnPageLoad);
} }
async updateAutoTotpCopyOnAutoFill() {
await this.storageService.save(ConstantsService.enableAutoTotpCopyOnAutoFillKey, this.enableAutoTotpCopyOnAutoFill);
}
async updateDisableFavicon() { async updateDisableFavicon() {
await this.storageService.save(ConstantsService.disableFaviconKey, this.disableFavicon); await this.storageService.save(ConstantsService.disableFaviconKey, this.disableFavicon);
await this.stateService.save(ConstantsService.disableFaviconKey, this.disableFavicon); await this.stateService.save(ConstantsService.disableFaviconKey, this.disableFavicon);

View File

@ -211,8 +211,8 @@ export default class AutofillService implements AutofillServiceInterface {
url: tab.url, url: tab.url,
}, { frameId: pd.frameId }); }, { frameId: pd.frameId });
if (options.cipher.type !== CipherType.Login || totpPromise || options.skipTotp || if (options.cipher.type !== CipherType.Login || totpPromise || !options.cipher.login.totp ||
!options.cipher.login.totp || (!canAccessPremium && !options.cipher.organizationUseTotp)) { (!canAccessPremium && !options.cipher.organizationUseTotp)) {
return; return;
} }
@ -259,13 +259,9 @@ export default class AutofillService implements AutofillServiceInterface {
return; return;
} }
const copyTotpOnAutoFill = await this.totpService.isAutoCopyOnAutoFillEnabled();
const shouldCopyTotp = fromCommand || copyTotpOnAutoFill;
const totpCode = await this.doAutoFill({ const totpCode = await this.doAutoFill({
cipher: cipher, cipher: cipher,
pageDetails: pageDetails, pageDetails: pageDetails,
skipTotp: !shouldCopyTotp,
skipLastUsed: !fromCommand, skipLastUsed: !fromCommand,
skipUsernameOnlyFill: !fromCommand, skipUsernameOnlyFill: !fromCommand,
onlyEmptyFields: !fromCommand, onlyEmptyFields: !fromCommand,