show fingerprint phrase menu option

This commit is contained in:
Kyle Spearrin 2018-11-16 10:34:31 -05:00
parent d207469fc0
commit 1e7c3c058c
3 changed files with 28 additions and 26 deletions

View File

@ -39,6 +39,7 @@ import { LockService } from 'jslib/abstractions/lock.service';
import { MessagingService } from 'jslib/abstractions/messaging.service'; import { MessagingService } from 'jslib/abstractions/messaging.service';
import { NotificationsService } from 'jslib/abstractions/notifications.service'; import { NotificationsService } from 'jslib/abstractions/notifications.service';
import { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service'; import { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { SearchService } from 'jslib/abstractions/search.service'; import { SearchService } from 'jslib/abstractions/search.service';
import { SettingsService } from 'jslib/abstractions/settings.service'; import { SettingsService } from 'jslib/abstractions/settings.service';
import { StorageService } from 'jslib/abstractions/storage.service'; import { StorageService } from 'jslib/abstractions/storage.service';
@ -89,7 +90,8 @@ export class AppComponent implements OnInit {
private lockService: LockService, private storageService: StorageService, private lockService: LockService, private storageService: StorageService,
private cryptoService: CryptoService, private componentFactoryResolver: ComponentFactoryResolver, private cryptoService: CryptoService, private componentFactoryResolver: ComponentFactoryResolver,
private messagingService: MessagingService, private collectionService: CollectionService, private messagingService: MessagingService, private collectionService: CollectionService,
private searchService: SearchService, private notificationsService: NotificationsService) { } private searchService: SearchService, private notificationsService: NotificationsService,
private platformUtilsService: PlatformUtilsService) { }
ngOnInit() { ngOnInit() {
this.ngZone.runOutsideAngular(() => { this.ngZone.runOutsideAngular(() => {
@ -135,6 +137,17 @@ export class AppComponent implements OnInit {
case 'openPremium': case 'openPremium':
this.openModal<PremiumComponent>(PremiumComponent, this.premiumRef); this.openModal<PremiumComponent>(PremiumComponent, this.premiumRef);
break; break;
case 'showFingerprintPhrase':
const fingerprint = await this.cryptoService.getFingerprint(
await this.userService.getUserId());
const result = await this.platformUtilsService.showDialog(
this.i18nService.t('yourAccountsFingerprint') + ': ' + fingerprint.join('-'),
this.i18nService.t('fingerprintPhrase'), this.i18nService.t('learnMore'),
this.i18nService.t('close'));
if (result) {
this.platformUtilsService.launchUri('https://help.bitwarden.com');
}
break;
case 'openPasswordHistory': case 'openPasswordHistory':
this.openModal<PasswordGeneratorHistoryComponent>( this.openModal<PasswordGeneratorHistoryComponent>(
PasswordGeneratorHistoryComponent, this.passwordHistoryRef); PasswordGeneratorHistoryComponent, this.passwordHistoryRef);

View File

@ -705,11 +705,13 @@
"changeMasterPasswordConfirmation": { "changeMasterPasswordConfirmation": {
"message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?"
}, },
"changeEmail": { "fingerprintPhrase": {
"message": "Change Email" "message": "Fingerprint Phrase",
"description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing."
}, },
"changeEmailConfirmation": { "yourAccountsFingerprint": {
"message": "You can change your email address on the bitwarden.com web vault. Do you want to visit the website now?" "message": "Your account's fingerprint phrase",
"description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing."
}, },
"goToWebVault": { "goToWebVault": {
"message": "Go To Web Vault" "message": "Go To Web Vault"

View File

@ -30,7 +30,7 @@ export class MenuMain extends BaseMenu {
lockNow: MenuItem; lockNow: MenuItem;
logOut: MenuItem; logOut: MenuItem;
twoStepLogin: MenuItem; twoStepLogin: MenuItem;
changeEmail: MenuItem; fingerprintPhrase: MenuItem;
changeMasterPass: MenuItem; changeMasterPass: MenuItem;
premiumMembership: MenuItem; premiumMembership: MenuItem;
passwordGenerator: MenuItem; passwordGenerator: MenuItem;
@ -57,7 +57,7 @@ export class MenuMain extends BaseMenu {
this.lockNow = this.menu.getMenuItemById('lockNow'); this.lockNow = this.menu.getMenuItemById('lockNow');
this.logOut = this.menu.getMenuItemById('logOut'); this.logOut = this.menu.getMenuItemById('logOut');
this.twoStepLogin = this.menu.getMenuItemById('twoStepLogin'); this.twoStepLogin = this.menu.getMenuItemById('twoStepLogin');
this.changeEmail = this.menu.getMenuItemById('changeEmail'); this.fingerprintPhrase = this.menu.getMenuItemById('fingerprintPhrase');
this.changeMasterPass = this.menu.getMenuItemById('changeMasterPass'); this.changeMasterPass = this.menu.getMenuItemById('changeMasterPass');
this.premiumMembership = this.menu.getMenuItemById('premiumMembership'); this.premiumMembership = this.menu.getMenuItemById('premiumMembership');
this.passwordGenerator = this.menu.getMenuItemById('passwordGenerator'); this.passwordGenerator = this.menu.getMenuItemById('passwordGenerator');
@ -66,7 +66,7 @@ export class MenuMain extends BaseMenu {
this.unlockedRequiredMenuItems = [ this.unlockedRequiredMenuItems = [
this.addNewLogin, this.addNewItem, this.addNewFolder, this.addNewLogin, this.addNewItem, this.addNewFolder,
this.syncVault, this.exportVault, this.settings, this.lockNow, this.twoStepLogin, this.changeEmail, this.syncVault, this.exportVault, this.settings, this.lockNow, this.twoStepLogin, this.fingerprintPhrase,
this.changeMasterPass, this.premiumMembership, this.passwordGenerator, this.passwordHistory, this.changeMasterPass, this.premiumMembership, this.passwordGenerator, this.passwordHistory,
this.searchVault]; this.searchVault];
this.updateApplicationMenuState(false, true); this.updateApplicationMenuState(false, true);
@ -100,24 +100,6 @@ export class MenuMain extends BaseMenu {
} }
}, },
}, },
{
label: this.main.i18nService.t('changeEmail'),
id: 'changeEmail',
click: async () => {
const result = dialog.showMessageBox(this.main.windowMain.win, {
title: this.main.i18nService.t('changeEmail'),
message: this.main.i18nService.t('changeEmail'),
detail: this.main.i18nService.t('changeEmailConfirmation'),
buttons: [this.main.i18nService.t('yes'), this.main.i18nService.t('no')],
cancelId: 1,
defaultId: 0,
noLink: true,
});
if (result === 0) {
await this.openWebVault();
}
},
},
{ {
label: this.main.i18nService.t('twoStepLogin'), label: this.main.i18nService.t('twoStepLogin'),
id: 'twoStepLogin', id: 'twoStepLogin',
@ -136,6 +118,11 @@ export class MenuMain extends BaseMenu {
} }
}, },
}, },
{
label: this.main.i18nService.t('fingerprintPhrase'),
id: 'fingerprintPhrase',
click: () => this.main.messagingService.send('showFingerprintPhrase'),
},
{ type: 'separator' }, { type: 'separator' },
{ {
label: this.i18nService.t('logOut'), label: this.i18nService.t('logOut'),