@ -3,11 +3,15 @@ import { Component, OnInit, Type, ViewChild, ViewContainerRef } from "@angular/c
import { ModalRef } from "jslib-angular/components/modal/modal.ref" ;
import { ModalRef } from "jslib-angular/components/modal/modal.ref" ;
import { ModalService } from "jslib-angular/services/modal.service" ;
import { ModalService } from "jslib-angular/services/modal.service" ;
import { ApiService } from "jslib-common/abstractions/api.service" ;
import { ApiService } from "jslib-common/abstractions/api.service" ;
import { I18nService } from "jslib-common/abstractions/i18n.service" ;
import { LogService } from "jslib-common/abstractions/log.service" ;
import { MessagingService } from "jslib-common/abstractions/messaging.service" ;
import { MessagingService } from "jslib-common/abstractions/messaging.service" ;
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service" ;
import { PolicyService } from "jslib-common/abstractions/policy.service" ;
import { PolicyService } from "jslib-common/abstractions/policy.service" ;
import { StateService } from "jslib-common/abstractions/state.service" ;
import { StateService } from "jslib-common/abstractions/state.service" ;
import { PolicyType } from "jslib-common/enums/policyType" ;
import { PolicyType } from "jslib-common/enums/policyType" ;
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType" ;
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType" ;
import { DeviceVerificationRequest } from "jslib-common/models/request/deviceVerificationRequest" ;
import { TwoFactorProviders } from "jslib-common/services/twoFactor.service" ;
import { TwoFactorProviders } from "jslib-common/services/twoFactor.service" ;
import { TwoFactorAuthenticatorComponent } from "./two-factor-authenticator.component" ;
import { TwoFactorAuthenticatorComponent } from "./two-factor-authenticator.component" ;
@ -39,18 +43,32 @@ export class TwoFactorSetupComponent implements OnInit {
canAccessPremium : boolean ;
canAccessPremium : boolean ;
showPolicyWarning = false ;
showPolicyWarning = false ;
loading = true ;
loading = true ;
enableDeviceVerification : boolean ;
isDeviceVerificationSectionEnabled : boolean ;
modal : ModalRef ;
modal : ModalRef ;
formPromise : Promise < any > ;
constructor (
constructor (
protected apiService : ApiService ,
protected apiService : ApiService ,
protected modalService : ModalService ,
protected modalService : ModalService ,
protected messagingService : MessagingService ,
protected messagingService : MessagingService ,
protected policyService : PolicyService ,
protected policyService : PolicyService ,
private stateService : StateService
private stateService : StateService ,
private platformUtilsService : PlatformUtilsService ,
private i18nService : I18nService ,
private logService : LogService
) { }
) { }
async ngOnInit() {
async ngOnInit() {
this . canAccessPremium = await this . stateService . getCanAccessPremium ( ) ;
this . canAccessPremium = await this . stateService . getCanAccessPremium ( ) ;
try {
const deviceVerificationSettings = await this . apiService . getDeviceVerificationSettings ( ) ;
this . isDeviceVerificationSectionEnabled =
deviceVerificationSettings . isDeviceVerificationSectionEnabled ;
this . enableDeviceVerification = deviceVerificationSettings . unknownDeviceVerificationEnabled ;
} catch ( e ) {
this . logService . error ( e ) ;
}
for ( const key in TwoFactorProviders ) {
for ( const key in TwoFactorProviders ) {
// eslint-disable-next-line
// eslint-disable-next-line
@ -186,4 +204,37 @@ export class TwoFactorSetupComponent implements OnInit {
this . showPolicyWarning = false ;
this . showPolicyWarning = false ;
}
}
}
}
async submit() {
try {
if ( this . enableDeviceVerification ) {
const email = await this . stateService . getEmail ( ) ;
const confirmed = await this . platformUtilsService . showDialog (
this . i18nService . t (
"areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX" ,
email
) ,
this . i18nService . t ( "deviceVerification" ) ,
this . i18nService . t ( "yes" ) ,
this . i18nService . t ( "no" ) ,
"warning"
) ;
if ( ! confirmed ) {
return ;
}
}
this . formPromise = this . apiService . putDeviceVerificationSettings (
new DeviceVerificationRequest ( this . enableDeviceVerification )
) ;
await this . formPromise ;
this . platformUtilsService . showToast (
"success" ,
null ,
this . i18nService . t ( "updatedDeviceVerification" )
) ;
} catch ( e ) {
this . logService . error ( e ) ;
}
}
}
}