@firestitch/2fa 12.11.1 → 12.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/enums/index.d.ts +1 -1
- package/app/enums/verification-method-type.enum.d.ts +5 -5
- package/app/interfaces/index.d.ts +1 -1
- package/app/interfaces/verification-method.interface.d.ts +11 -11
- package/app/modules/code-input/code-input.module.d.ts +9 -9
- package/app/modules/code-input/components/code-input/code-input.component.d.ts +13 -13
- package/app/modules/code-input/components/code-input/index.d.ts +1 -1
- package/app/modules/code-input/index.d.ts +1 -1
- package/app/modules/defaulted/components/defaulted/defaulted.component.d.ts +5 -5
- package/app/modules/defaulted/components/defaulted/index.d.ts +1 -1
- package/app/modules/defaulted/defaulted.module.d.ts +7 -7
- package/app/modules/manage/components/2fa-manage/2fa-manage.component.d.ts +30 -30
- package/app/modules/manage/components/2fa-manage/index.d.ts +1 -1
- package/app/modules/manage/components/app/app.component.d.ts +32 -32
- package/app/modules/manage/components/app/index.d.ts +1 -1
- package/app/modules/manage/components/email/email.component.d.ts +27 -27
- package/app/modules/manage/components/email/index.d.ts +1 -1
- package/app/modules/manage/components/emails/emails.component.d.ts +19 -19
- package/app/modules/manage/components/emails/index.d.ts +1 -1
- package/app/modules/manage/components/manage-methods/index.d.ts +1 -1
- package/app/modules/manage/components/manage-methods/manage-methods.component.d.ts +35 -35
- package/app/modules/manage/components/number/index.d.ts +1 -1
- package/app/modules/manage/components/number/number.component.d.ts +28 -28
- package/app/modules/manage/components/numbers/index.d.ts +1 -1
- package/app/modules/manage/components/numbers/numbers.component.d.ts +20 -20
- package/app/modules/manage/components/qr-code/index.d.ts +1 -1
- package/app/modules/manage/components/qr-code/qr-code.component.d.ts +11 -11
- package/app/modules/manage/fs-2f-manage.module.d.ts +33 -33
- package/app/modules/manage/services/index.d.ts +1 -1
- package/app/modules/manage/services/two-factor-manage.service.d.ts +52 -52
- package/app/modules/resend/components/resend/index.d.ts +1 -1
- package/app/modules/resend/components/resend/resend.component.d.ts +14 -14
- package/app/modules/resend/resend.module.d.ts +9 -9
- package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +38 -38
- package/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.d.ts +20 -20
- package/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +22 -22
- package/app/modules/verification/directives/2fa-verification-resend.directive.d.ts +11 -11
- package/app/modules/verification/directives/index.d.ts +1 -1
- package/app/modules/verification/fs-2fa-verification.module.d.ts +25 -25
- package/app/modules/verification-methods/components/verification-methods/index.d.ts +1 -1
- package/app/modules/verification-methods/components/verification-methods/verification-methods.component.d.ts +26 -26
- package/app/modules/verification-methods/fs-2f-verification-methods.module.d.ts +14 -14
- package/app/modules/verification-methods/index.d.ts +1 -1
- package/bundles/firestitch-2fa.umd.js +1464 -1464
- package/bundles/firestitch-2fa.umd.js.map +1 -1
- package/esm2015/app/enums/index.js +1 -1
- package/esm2015/app/enums/verification-method-type.enum.js +6 -6
- package/esm2015/app/interfaces/index.js +1 -1
- package/esm2015/app/interfaces/verification-method.interface.js +1 -1
- package/esm2015/app/modules/code-input/code-input.module.js +29 -29
- package/esm2015/app/modules/code-input/components/code-input/code-input.component.js +36 -36
- package/esm2015/app/modules/code-input/components/code-input/index.js +1 -1
- package/esm2015/app/modules/code-input/index.js +1 -1
- package/esm2015/app/modules/defaulted/components/defaulted/defaulted.component.js +15 -15
- package/esm2015/app/modules/defaulted/components/defaulted/index.js +1 -1
- package/esm2015/app/modules/defaulted/defaulted.module.js +17 -17
- package/esm2015/app/modules/manage/components/2fa-manage/2fa-manage.component.js +103 -103
- package/esm2015/app/modules/manage/components/2fa-manage/index.js +1 -1
- package/esm2015/app/modules/manage/components/app/app.component.js +87 -87
- package/esm2015/app/modules/manage/components/app/index.js +1 -1
- package/esm2015/app/modules/manage/components/email/email.component.js +82 -82
- package/esm2015/app/modules/manage/components/email/index.js +1 -1
- package/esm2015/app/modules/manage/components/emails/emails.component.js +49 -49
- package/esm2015/app/modules/manage/components/emails/index.js +1 -1
- package/esm2015/app/modules/manage/components/manage-methods/index.js +1 -1
- package/esm2015/app/modules/manage/components/manage-methods/manage-methods.component.js +127 -127
- package/esm2015/app/modules/manage/components/number/index.js +1 -1
- package/esm2015/app/modules/manage/components/number/number.component.js +85 -85
- package/esm2015/app/modules/manage/components/numbers/index.js +1 -1
- package/esm2015/app/modules/manage/components/numbers/numbers.component.js +50 -50
- package/esm2015/app/modules/manage/components/qr-code/index.js +1 -1
- package/esm2015/app/modules/manage/components/qr-code/qr-code.component.js +35 -35
- package/esm2015/app/modules/manage/fs-2f-manage.module.js +116 -116
- package/esm2015/app/modules/manage/services/index.js +1 -1
- package/esm2015/app/modules/manage/services/two-factor-manage.service.js +160 -160
- package/esm2015/app/modules/resend/components/resend/index.js +1 -1
- package/esm2015/app/modules/resend/components/resend/resend.component.js +39 -39
- package/esm2015/app/modules/resend/resend.module.js +29 -29
- package/esm2015/app/modules/verification/components/2fa-verification/2fa-verification.component.js +128 -128
- package/esm2015/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.js +60 -60
- package/esm2015/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.js +60 -60
- package/esm2015/app/modules/verification/directives/2fa-verification-resend.directive.js +31 -31
- package/esm2015/app/modules/verification/directives/index.js +1 -1
- package/esm2015/app/modules/verification/fs-2fa-verification.module.js +96 -96
- package/esm2015/app/modules/verification-methods/components/verification-methods/index.js +1 -1
- package/esm2015/app/modules/verification-methods/components/verification-methods/verification-methods.component.js +120 -120
- package/esm2015/app/modules/verification-methods/fs-2f-verification-methods.module.js +47 -47
- package/esm2015/app/modules/verification-methods/index.js +1 -1
- package/esm2015/firestitch-2fa.js +4 -4
- package/esm2015/public_api.js +8 -8
- package/fesm2015/firestitch-2fa.js +1313 -1313
- package/fesm2015/firestitch-2fa.js.map +1 -1
- package/firestitch-2fa.d.ts +5 -5
- package/package.json +1 -1
- package/public_api.d.ts +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-2fa.js","sources":["../../src/app/enums/verification-method-type.enum.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.html","../../src/app/modules/code-input/components/code-input/code-input.component.ts","../../src/app/modules/code-input/components/code-input/code-input.component.html","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.ts","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.html","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.ts","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.html","../../src/app/modules/code-input/code-input.module.ts","../../src/app/modules/resend/components/resend/resend.component.ts","../../src/app/modules/resend/components/resend/resend.component.html","../../src/app/modules/resend/resend.module.ts","../../src/app/modules/verification/directives/2fa-verification-resend.directive.ts","../../src/app/modules/verification/fs-2fa-verification.module.ts","../../src/app/modules/manage/components/qr-code/qr-code.component.ts","../../src/app/modules/manage/components/qr-code/qr-code.component.html","../../src/app/modules/manage/components/app/app.component.ts","../../src/app/modules/manage/components/app/app.component.html","../../src/app/modules/manage/components/email/email.component.ts","../../src/app/modules/manage/components/email/email.component.html","../../src/app/modules/manage/components/number/number.component.ts","../../src/app/modules/manage/components/number/number.component.html","../../src/app/modules/manage/services/two-factor-manage.service.ts","../../src/app/modules/defaulted/components/defaulted/defaulted.component.ts","../../src/app/modules/defaulted/components/defaulted/defaulted.component.html","../../src/app/modules/verification-methods/components/verification-methods/verification-methods.component.ts","../../src/app/modules/verification-methods/components/verification-methods/verification-methods.component.html","../../src/app/modules/manage/components/numbers/numbers.component.ts","../../src/app/modules/manage/components/numbers/numbers.component.html","../../src/app/modules/manage/components/emails/emails.component.ts","../../src/app/modules/manage/components/emails/emails.component.html","../../src/app/modules/manage/components/manage-methods/manage-methods.component.ts","../../src/app/modules/manage/components/manage-methods/manage-methods.component.html","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.ts","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.html","../../src/app/modules/defaulted/defaulted.module.ts","../../src/app/modules/verification-methods/fs-2f-verification-methods.module.ts","../../src/app/modules/manage/fs-2f-manage.module.ts","../../src/firestitch-2fa.ts"],"sourcesContent":["export enum VerificationMethodType {\n Sms = 'sms',\n Email = 'email',\n App = 'app',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\n\n@Component({\n templateUrl: './2fa-verification-methods.component.html',\n styleUrls: ['./2fa-verification-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2faVerificationMethodsComponent {\n\n public verificationMethod: IFsVerificationMethod;\n public phone: string;\n public code: string;\n public verificationMethods: Record<string, IFsVerificationMethod[]>;\n public readonly verificationMethodType = VerificationMethodType;\n\n private _selectVerificationMethod: (IFsVerificationMethod) => Observable<IFsVerificationMethod>; \n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n private _dialogData: any,\n private _dialogRef: MatDialogRef<Fs2faVerificationMethodsComponent>,\n ) {\n this._selectVerificationMethod = _dialogData.selectVerificationMethod;\n this._setActiveMethod();\n this._initMethods(_dialogData.verificationMethods);\n }\n\n public compareWith(o1, o2) {\n return o1 && o2 && o1.id === o2.id\n }\n\n public setVerificationMethod = () => {\n return this._selectVerificationMethod(this.verificationMethod)\n .pipe(\n tap((method: IFsVerificationMethod) => {\n this._dialogRef.close(method);\n })\n );\n };\n\n private _setActiveMethod(): void {\n this.verificationMethod = this._dialogData?.verificationMethod;\n }\n\n private _initMethods(verificationMethods): void {\n this.verificationMethods = verificationMethods\n .reduce((acc, method) => {\n if (!acc[method.type]) {\n acc[method.type] = [];\n }\n\n acc[method.type].push(method);\n\n return acc;\n }, {});\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\" [dirtySubmitButton]=\"false\">\n <mat-dialog-content>\n <ng-container>\n <fs-radio-group [(ngModel)]=\"verificationMethod\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of verificationMethods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n textsms\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Send verification code to a mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Send verification code to an email address\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.App\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n phone_iphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Authenticator App</div>\n <div class=\"method-subtitle\">\n Send verification code to your authenticator app\n </div>\n </div>\n </div>\n </ng-container> \n </ng-container>\n\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n {{ method.phoneNumber }}\n </ng-container>\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n {{ method.email }}\n </ng-container>\n <ng-container *ngSwitchCase=\"verificationMethodType.App\">\n Authenticator App\n </ng-container> \n </ng-container>\n </mat-radio-button>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ViewChild } from '@angular/core';\nimport { FsCodeInputComponent } from '@firestitch/code-input';\n\n\n@Component({\n selector: 'app-code-input',\n templateUrl: './code-input.component.html',\n styleUrls: ['./code-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeInputComponent {\n\n @ViewChild(FsCodeInputComponent)\n public codeInput: FsCodeInputComponent;\n\n @Input() public codeLength: number;\n @Input() public code;\n\n @Output() public codeCompleted = new EventEmitter();\n @Output() public codeChanged = new EventEmitter();\n \n public focus(): void {\n this.codeInput.focusOnField(0);\n }\n}","<fs-code-input\n [codeLength]=\"6\"\n [ngModel]=\"code\"\n name=\"code\"\n [isPrevFocusableAfterClearing]=\"false\"\n (completed)=\"codeCompleted.emit($event)\"\n (ngModelChange)=\"codeChanged.emit($event)\">\n</fs-code-input>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { CodeInputComponent } from '../../../../modules/code-input/components/code-input';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\n\n@Component({\n selector: 'fs-2fa-verification-code',\n templateUrl: './2fa-verification-code.component.html',\n styleUrls: ['./2fa-verification-code.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useExisting: NgForm,\n },\n ],\n})\nexport class Fs2faVerificationCodeComponent {\n\n @ViewChild(CodeInputComponent)\n public codeInputComponent: CodeInputComponent;\n\n @Input()\n public type: VerificationMethodType;\n\n @Input()\n public recipient: string;\n\n @Input()\n public code;\n\n @Output()\n public codeChanged = new EventEmitter<string>();\n\n @Output()\n public codeCompleted = new EventEmitter<void>();\n\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n private _form: FsFormDirective,\n ) {}\n\n public codeChange(code): void {\n this.code = code;\n this.codeChanged.emit(this.code);\n this._form.dirty();\n }\n\n public focus(): void {\n this.codeInputComponent.focus();\n }\n\n}\n","<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsDialog } from '@firestitch/dialog';\n\nimport { filter, finalize, takeUntil, tap } from 'rxjs/operators';\n\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\nimport { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';\n\n\n@Component({\n selector: 'fs-2fa-verification',\n templateUrl: './2fa-verification.component.html',\n styleUrls: ['./2fa-verification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush, \n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n})\nexport class Fs2faVerificationComponent implements OnDestroy, AfterViewInit, OnInit {\n\n @ViewChild(Fs2faVerificationCodeComponent)\n public verificationCodeComponent: Fs2faVerificationCodeComponent;\n\n @Input()\n public verificationMethod: IFsVerificationMethod;\n\n @Input()\n public resend: () => Observable<void>;\n\n @Input()\n public showTrustedDevice = true;\n\n @Input()\n public trustDevice = true;\n\n @Input()\n public trustDays;\n\n @Input()\n public formatRecipient = false;\n\n @Input()\n public getVerificationMethods: () => Observable<IFsVerificationMethod[]>;\n\n @Input()\n public selectVerificationMethod: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n @Output()\n public codeChanged = new EventEmitter<unknown>();\n\n @Output()\n public codeCompleted = new EventEmitter<unknown>();\n\n @Output()\n public trustDeviceChange = new EventEmitter<boolean>();\n\n public code = '';\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: FsDialog,\n private _message: FsMessage,\n ) {}\n\n public get recipient(): string {\n if(this.verificationMethod.type === VerificationMethodType.Email) {\n return this.verificationMethod.email;\n }\n\n if(this.verificationMethod.type === VerificationMethodType.Sms) {\n return this.verificationMethod.phoneNumber;\n }\n }\n\n public ngOnInit(): void {\n this.codeChanged\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((code: string) => {\n this.code = code;\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngAfterViewInit(): void {\n this.verificationCodeComponent.focus(); \n }\n\n public resendCode(): Observable<any> {\n return this.resend()\n .pipe(\n tap(() => {\n this.code = '';\n this._message.success('Resent Code');\n }),\n finalize(() => {\n this.verificationCodeComponent.focus(); \n }),\n );\n }\n\n public showVerificationMethods(): void {\n this.getVerificationMethods()\n .subscribe((verificationMethods) => {\n this._dialog.open(\n Fs2faVerificationMethodsComponent,\n {\n data: {\n verificationMethod: this.verificationMethod,\n verificationMethods,\n selectVerificationMethod: this.selectVerificationMethod,\n }\n }\n )\n .afterClosed()\n .pipe(\n filter((verificationMethod) => !!verificationMethod),\n )\n .subscribe((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.code = '';\n this._cdRef.markForCheck();\n\n setTimeout(() => {\n this.verificationCodeComponent.focus();\n });\n });\n });\n }\n\n}\n","<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n Trust Device\n <div class=\"small\">\n Bypass 2-Step Verification on this browser <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> unless you clear cookies.\n </div>\n </mat-checkbox>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsCodeInputModule } from '@firestitch/code-input';\n\nimport { CodeInputComponent } from './components/code-input';\n\n\n@NgModule({\n imports: [\n FormsModule,\n \n FsCodeInputModule,\n ],\n declarations: [\n CodeInputComponent,\n ],\n exports: [\n CodeInputComponent,\n ],\n})\nexport class CodeInputModule {\n}\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-resend',\n templateUrl: './resend.component.html',\n styleUrls: ['./resend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResendComponent {\n\n @Input() public resend: () => Observable<any>;\n \n public resendInProgress = false;\n\n private _destroy$ = new Subject();\n \n constructor(\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public resendClick(): void {\n this.resendInProgress = true;\n this.resend()\n .pipe(\n finalize(() => {\n this.resendInProgress = false; \n this._cdRef.markForCheck(); \n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}","<ng-container *ngIf=\"!resendInProgress else sending\">\n Didn't receive a code? <a (click)=\"resendClick()\">Resend</a>\n</ng-container>\n<ng-template #sending>\n <div class=\"sending\">\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </div>\n</ng-template>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { ResendComponent } from './components/resend';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n MatProgressSpinnerModule,\n ],\n declarations: [\n ResendComponent,\n ],\n exports: [\n ResendComponent,\n ],\n})\nexport class ResendModule {\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { finalize } from 'rxjs/operators';\n\nimport { Fs2faVerificationComponent } from '../components/2fa-verification/2fa-verification.component';\n\n@Directive({\n selector: '[fs2faVerificationResend]',\n})\nexport class Fs2faVerificationResendDirective { \n \n @Input('fs2faVerificationResend') public verification: Fs2faVerificationComponent;\n\n @HostListener('click')\n public click() {\n this._button.disabled = true;\n this.verification.resendCode()\n .pipe(\n finalize(() => this._button.disabled = false),\n )\n .subscribe();\n }\n\n public constructor(\n private _button: MatButton,\n ) {}\n\n}","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { Fs2faVerificationComponent } from './components/2fa-verification/2fa-verification.component';\nimport { Fs2faVerificationCodeComponent } from './components/2fa-verification-code/2fa-verification-code.component';\nimport { Fs2faVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';\n\nimport { CodeInputModule } from '../code-input';\nimport { ResendModule } from '../resend/resend.module';\nimport { Fs2faVerificationResendDirective } from './directives';\nimport { FsPhoneModule } from '@firestitch/phone';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatRadioModule,\n MatCheckboxModule,\n\n FsFormModule,\n FsRadioGroupModule,\n FsDialogModule,\n FsSkeletonModule,\n FsPhoneModule,\n FsSkeletonModule,\n\n ResendModule,\n CodeInputModule,\n ],\n declarations: [\n Fs2faVerificationComponent,\n Fs2faVerificationCodeComponent,\n Fs2faVerificationMethodsComponent,\n Fs2faVerificationResendDirective,\n ],\n exports: [\n Fs2faVerificationComponent,\n Fs2faVerificationResendDirective,\n ],\n providers: [],\n})\nexport class Fs2faVerificationModule {}\n","import {\n Component, OnInit, ChangeDetectorRef, Input,\n} from '@angular/core';\n\nimport QRCode from 'qrcode';\n\n@Component({\n selector: 'app-qr-code',\n templateUrl: './qr-code.component.html',\n styleUrls: ['./qr-code.component.scss'],\n})\nexport class QrCodeComponent implements OnInit {\n\n @Input() public value;\n\n public image;\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n QRCode.toDataURL(this.value, { \n errorCorrectionLevel: 'H',\n width: 300,\n height: 300,\n })\n .then((url) => {\n this.image = url;\n this._cdRef.markForCheck();\n })\n .catch((err) => {\n console.error(err)\n });\n \n }\n\n\n}\n","<ng-container *ngIf=\"image\">\n <img [src]=\"image\">\n</ng-container>","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\nimport { switchMap, tap } from 'rxjs/operators';\n\nimport { TwoFactorManageService } from '../../services';\nimport { of } from 'rxjs';\n\n\n@Component({\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements OnInit {\n\n @ViewChild(FsFormDirective)\n public form: FsFormDirective;\n\n public twoFactorManageService: TwoFactorManageService;\n public mode: 'qr-code' | 'code-input' = 'qr-code';\n public accountId;\n public verificationMethod;\n public qrCodeUrl;\n public code;\n public default; \n public appType: 'google' | 'authy';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<AppComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.accountId = this._data.accountId;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public appTypeGoogle(): void {\n this.appTypeSelect('google');\n }\n\n public appTypeAuthy(): void {\n this.appTypeSelect('authy');\n }\n\n public appTypeSelect(appType): void {\n this.appType = appType;\n this.twoFactorManageService.verificationMethodCreate$({\n type: VerificationMethodType.App,\n })\n .subscribe((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.qrCodeUrl = verificationMethod.qrCodeUrl;\n this._cdRef.markForCheck();\n });\n }\n\n public codeCompleted(): void {\n this.form.triggerSubmit();\n }\n\n public codeChanged(code): void {\n this.code = code;\n this.form.dirty();\n }\n\n public next(): void {\n this.mode = 'code-input';\n }\n\n public verify = () => {\n return this.twoFactorManageService.verificationMethodVerify$(this.code, true)\n .pipe(\n switchMap(() => {\n return this.default && this.twoFactorManageService.verificationMethodDefault$ ?\n this.twoFactorManageService.verificationMethodDefault$(this.verificationMethod) :\n of(true);\n }),\n tap(() => {\n this._message.success('Created app authenticator verification method');\n this._dialogRef.close(true);\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>Authenticator App Setup</h1>\n <mat-dialog-content>\n\n <div *ngIf=\"mode === 'qr-code'\" class=\"qr-code\">\n <ng-container *ngIf=\"appType\">\n <ol>\n <li>\n <ng-container *ngIf=\"appType === 'authy'\">\n Install the Authy Authenticator App from the <a href=\"https://apps.apple.com/us/app/authy/id494168017\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.authy.authy\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n\n <ng-container *ngIf=\"appType === 'google'\">\n Install the Google Authenticator App from the <a href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n </li>\n <ng-container *ngIf=\"appType === 'authy'\">\n <li>\n Open the Authy app and select <b>Add Account</b>.\n </li>\n <li>\n Select <b>Scan QR Code</b> and scan the QR code below.\n </li>\n </ng-container> \n <ng-container *ngIf=\"appType === 'google'\">\n <li>\n Open the Google Authentictor app and click the <b>Plus icon</b> in the lower right corner.\n </li>\n <li>\n Select <b>Scan a QR code</b> and scan the QR code below.\n </li>\n </ng-container>\n </ol>\n\n <ng-container *fsSkeleton=\"qrCodeUrl\">\n <app-qr-code\n [value]=\"qrCodeUrl\">\n </app-qr-code>\n </ng-container>\n </ng-container>\n\n <div class=\"app-types\" *ngIf=\"!appType\">\n <p>Select the Authenticator App you prefer</p>\n\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg width=\"50\" height=\"50\" viewBox=\"0 0 256 256\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"xMidYMid\"><path d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\" fill=\"#EC1C24\"/><path d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\" fill=\"#FFF\"/></svg>\n </a>\n Authy\n </span>\n \n <span>\n <a (click)=\"appTypeGoogle()\"> \n <svg width=\"50\" height=\"50\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\" fill=\"#a0a0a0\"/>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"/>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"/>\n </g>\n <path d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\" fill=\"#686868\"/>\n <path d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\" fill=\"#c3c3c3\"/>\n <path d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\" fill=\"#474747\"/>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"/>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"/>\n </g>\n <path d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\" fill=\"#b0b0b0\"/>\n <path d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\" fill=\"#939393\"/>\n <path d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\" fill=\"#767676\"/>\n <path d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\" fill=\"#bebebe\"/>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n </div>\n \n </div>\n\n <div *ngIf=\"mode === 'code-input'\" class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n\n <app-code-input\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\">\n </app-code-input>\n \n <div class=\"checkboxes\">\n <mat-checkbox name=\"default\" [(ngModel)]=\"default\" [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </div>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <ng-container *ngIf=\"appType\">\n <button\n *ngIf=\"mode === 'qr-code'\"\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n <button\n *ngIf=\"mode === 'code-input'\"\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button> \n </ng-container>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\n\n@Component({\n templateUrl: './email.component.html',\n styleUrls: ['./email.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public email;\n public code;\n public default;\n public verificationMethod = null;\n public trustDevice = true;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend = (): Observable<void> => {\n return this.twoFactorManageService.verificationMethodResend()\n .pipe(\n tap(() => {\n this._message.success('Resent verification code');\n }),\n );\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify$(this.code, this.trustDevice)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created email verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate$({\n type: VerificationMethodType.Email,\n email: this.email,\n default: this.default,\n })\n .pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this email for verifying your account security. </p>\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\n\n@Component({\n templateUrl: './number.component.html',\n styleUrls: ['./number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public phone;\n public code;\n public default;\n public trustDevice = true;\n public verificationMethod = null;\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<NumberComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend = (): Observable<void> => {\n return this.twoFactorManageService.verificationMethodResend()\n .pipe(\n tap(() => {\n this._message.success('Resent verification code');\n }),\n );\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify$(this.code, this.trustDevice)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created text message verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate$({\n type: VerificationMethodType.Sms,\n phoneNumber: this.phone.number,\n phoneCode: this.phone.countryCode,\n phoneCountry: this.phone.isoCode,\n default: this.default,\n })\n .pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\" [autocomplete]=\"false\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text Message Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\"\n [formatRecipient]=\"true\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.</p>\n <mat-form-field>\n <mat-label>Phone number</mat-label>\n <fs-phone-field\n [(ngModel)]=\"phone\"\n [country]=\"defaultCountry\"\n name=\"phone\"\n [mode]=\"'object'\"\n autocomplete=\"off\"\n [required]=\"true\">\n </fs-phone-field>\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { AppComponent } from '../components/app';\nimport { VerificationMethodType } from '../../../enums/verification-method-type.enum';\nimport { EmailComponent } from '../components/email';\nimport { NumberComponent } from '../components/number';\nimport { IFsVerificationMethod } from '../../../interfaces';\n\n\n@Injectable()\nexport class TwoFactorManageService implements OnDestroy {\n\n private _destroy$ = new Subject();\n\n private _verificationMethodsFetch: (query: any) => Observable<any[]>;\n private _verificationMethodCreate: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n private _verificationMethodDelete: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n private _verificationMethodDefault: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n private _verificationMethodVerify: (code, trustDevice: boolean) => Observable<any>;\n private _verificationMethodResend: () => Observable<any>;\n private _accountVerify: () => Observable<any[]>;\n private _verificationMethods$ = new BehaviorSubject<any[]>([]);\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public get verificationMethods$() {\n return this._verificationMethods$\n .pipe(\n takeUntil(this._destroy$),\n );\n }\n \n public get verificationMethods() {\n return this._verificationMethods$.getValue();\n }\n\n public get hasVerificationMethods(): boolean {\n return !!this._verificationMethods$.getValue().length;\n }\n\n public get emailVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Email);\n }\n\n public get smsVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Sms);\n }\n\n public get appVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.App);\n }\n \n public getVerificationMethods(type) {\n return this.verificationMethods\n .filter((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n \n public hasVerificationMethod(type) {\n return this.verificationMethods\n .some((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n\n public registerVerificationMethodDefault(value) {\n this._verificationMethodDefault = value;\n }\n\n public registerVerificationMethodResend(value) {\n this._verificationMethodResend = value;\n }\n\n public registerVerificationMethodsFetch(value) {\n this._verificationMethodsFetch = value;\n }\n\n public registerVerificationMethodDelete(value) {\n this._verificationMethodDelete = value;\n }\n\n public registerVerificationMethodCreate(value) {\n this._verificationMethodCreate = value;\n }\n\n public registerVerificationMethodVerify(value) {\n this._verificationMethodVerify = value;\n }\n\n public registerAccountVerify(value) {\n this._accountVerify = value;\n }\n\n public get hasVerificationMethodResend() {\n return !!this._verificationMethodResend;\n }\n\n public get hasVerificationMethodDefault() {\n return !!this._verificationMethodDefault;\n }\n\n public get hasVerificationMethodsFetch() {\n return !!this._verificationMethodsFetch;\n }\n\n public get hasVerificationMethodDelete() {\n return !!this._verificationMethodDelete;\n }\n\n public get hasVerificationMethodCreate() {\n return !!this._verificationMethodCreate;\n }\n\n public get hasVerificationMethodVerify() {\n return !!this._verificationMethodVerify;\n }\n\n public verificationMethodDelete$(verificationMethod): Observable<any> {\n return this._verificationMethodDelete(verificationMethod)\n .pipe(\n tap(() => {\n this.verificationMethodsFetch();\n }),\n );\n }\n\n public verificationMethodVerify$(code, trustDevice): Observable<any> {\n return this._verificationMethodVerify(code, trustDevice)\n .pipe(\n tap(() => {\n this.verificationMethodsFetch();\n }),\n );\n }\n\n public verificationMethodCreate$(verificationMethod): Observable<any> {\n return this._verificationMethodCreate(verificationMethod);\n }\n\n public verificationMethodDefault$(verificationMethod): Observable<any> {\n return this._verificationMethodDefault(verificationMethod);\n }\n\n public verificationMethodResend(): Observable<any> {\n return this._verificationMethodResend();\n }\n\n public verificationMethodsFetch(query?: any) {\n this.verificationMethodsFetch$(query)\n .subscribe();\n }\n\n public verificationMethodsFetch$(query?: any): Observable<any> {\n return this._verificationMethodsFetch(query)\n .pipe(\n tap((verificationMethods) => {\n this._verificationMethods$.next(verificationMethods);\n })\n );\n }\n\n public accountVerify$(): Observable<any> {\n return this._accountVerify ? this._accountVerify() : of(true);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public addSms$(defaultCountry): Observable<any>{\n return this.accountVerify$()\n .pipe(\n switchMap(() => this._dialog.open(NumberComponent, {\n data: {\n defaultCountry,\n twoFactorManageService: this,\n },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodsFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addEmail$(): Observable<any>{\n return this.accountVerify$()\n .pipe(\n switchMap(() => this._dialog.open(EmailComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodsFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addApp$(): Observable<any>{\n return this.accountVerify$()\n .pipe(\n switchMap(() => this._dialog.open(AppComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodsFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n}\n","import {\n Component, ChangeDetectionStrategy,\n} from '@angular/core';\n\n\n@Component({\n selector: 'app-defaulted',\n templateUrl: './defaulted.component.html',\n styleUrls: ['./defaulted.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultedComponent {\n\n}\n","<span>Default</span>","import {\n Component, ChangeDetectionStrategy, OnInit, Input, ViewChild, Output, EventEmitter,\n} from '@angular/core';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nimport { IFsVerificationMethod } from '../../../../interfaces';\nimport { VerificationMethodType } from '../../../../enums';\nimport { TwoFactorManageService } from '../../../manage/services';\n\n\n@Component({\n selector: 'fs-2fa-verification-methods',\n templateUrl: './verification-methods.component.html',\n styleUrls: ['./verification-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VerificationMethodsComponent implements OnInit {\n\n @ViewChild(FsListComponent)\n public list: FsListComponent;\n\n @Input() public type: VerificationMethodType;\n @Input() public accountVerify: () => Observable<any>;\n @Input() public verificationMethodsFetch: (query: any) => Observable<IFsVerificationMethod[]>;\n @Input() public verificationMethodDelete: (verificationMethod: IFsVerificationMethod) => Observable<any>;\n @Input() public verificationMethodDefault: (verificationMethod: IFsVerificationMethod) => Observable<any>;\n @Input() public twoFactorManageService: TwoFactorManageService;\n\n @Output() public deleted = new EventEmitter();\n \n public listConfig: FsListConfig;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n private _prompt: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n if(!this.verificationMethodDefault && this.twoFactorManageService?.hasVerificationMethodDefault) {\n this.verificationMethodDefault = (verificationMethod: IFsVerificationMethod) => {\n return this.twoFactorManageService.verificationMethodDefault$(verificationMethod);\n }\n }\n \n if(!this.verificationMethodDelete && this.twoFactorManageService?.hasVerificationMethodDelete) {\n this.verificationMethodDelete = (verificationMethod: IFsVerificationMethod) => {\n return this.twoFactorManageService.verificationMethodDelete$(verificationMethod);\n }\n }\n \n if(!this.verificationMethodsFetch && this.twoFactorManageService?.hasVerificationMethodsFetch) {\n this.verificationMethodsFetch = (query) => {\n return this.twoFactorManageService.verificationMethodsFetch$(query);\n }\n }\n \n if(!this.accountVerify && this.twoFactorManageService?.hasVerificationMethodVerify) {\n this.accountVerify = () => {\n return this.twoFactorManageService?.accountVerify$();\n }\n }\n\n this.listConfig = {\n paging: false,\n rowActions: [\n {\n click: (verificationMethod) => {\n this.accountVerify()\n .pipe(\n switchMap(() => this.verificationMethodDefault(verificationMethod)),\n )\n .subscribe(() => {\n this.list.reload();\n });\n },\n show: (data) => {\n return !!this.verificationMethodDefault && !data.default;\n },\n label: 'Set as Default',\n },\n {\n click: (verificationMethod) => {\n this._prompt.confirm({\n title: 'Confirm',\n template: 'Would you like to delete this verification method?',\n })\n .pipe(\n switchMap(() => this.accountVerify()),\n switchMap(() => this.verificationMethodDelete(verificationMethod)),\n )\n .subscribe(() => {\n this.deleted.emit();\n this.list.reload();\n });\n },\n show: () => {\n return !!this.verificationMethodDelete;\n },\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n query = {\n ...query,\n type: this.type,\n };\n\n return this.verificationMethodsFetch(query) \n .pipe(\n map((verificationMethods) => ({\n data: verificationMethods.filter((verificationMethod) => {\n return !this.type || verificationMethod.type === this.type;\n }),\n }),\n ),\n );\n },\n };\n }\n\n public reload(): void {\n this.list.reload();\n }\n}\n","<fs-list [config]=\"listConfig\">\n <fs-list-column class=\"col-icon\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.type === VerificationMethodType.Sms\">\n <mat-icon>textsms</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.Email\">\n <mat-icon>email</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.App\">\n <mat-icon>phone_iphone</mat-icon>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"col-name\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"row\">\n <ng-container *ngIf=\"row.type === VerificationMethodType.Sms\">\n <div class=\"row\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> \n <span>{{row.phoneNumber | fsPhone}}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.Email\">\n {{row.email}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.App\">\n App\n </ng-container>\n\n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>","import {\n Component, Inject, ChangeDetectionStrategy, ViewChild,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodsComponent } from '../../../../modules/verification-methods/components/verification-methods';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './numbers.component.html',\n styleUrls: ['./numbers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumbersComponent {\n\n @ViewChild(VerificationMethodsComponent) \n public verificationMethods: VerificationMethodsComponent;\n\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any, \n private _dialogRef: MatDialogRef<NumbersComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n }\n\n public add(): void {\n this.twoFactorManageService.addSms$(this.defaultCountry)\n .subscribe(() => {\n this.verificationMethods.reload();\n });\n }\n\n public deleted(): void {\n this._message.success('Deleted text message verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n <mat-icon>textsms</mat-icon> Text Message Numbers\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Sms\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Number\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy, ViewChild,\n} from '@angular/core';\n\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodsComponent } from '../../../../modules/verification-methods/components/verification-methods';\n\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './emails.component.html',\n styleUrls: ['./emails.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailsComponent {\n\n @ViewChild(VerificationMethodsComponent) \n public verificationMethods: VerificationMethodsComponent;\n\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailsComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n }\n\n public add(): void {\n this.twoFactorManageService.addEmail$()\n .subscribe(() =>{\n this.verificationMethods.reload();\n });\n }\n\n public deleted(): void {\n this._message.success('Deleted email verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n <mat-icon>email</mat-icon> Emails\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Email\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\n\nimport { NumbersComponent } from '../numbers';\nimport { EmailsComponent } from '../emails';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { FsMessage } from '@firestitch/message';\nimport { switchMap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './manage-methods.component.html',\n styleUrls: ['./manage-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManageMethodsComponent implements OnInit, OnDestroy {\n\n public twoFactorManageService: TwoFactorManageService;\n public verificationMethods;\n public verificationMethodTypes = {};\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject();\n private _defaultCountry: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._defaultCountry = this._data.defaultCountry;\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.verificationMethodTypes = this._data.verificationMethodTypes\n .reduce((verificationMethodTypes, verificationMethodType) => {\n verificationMethodTypes[verificationMethodType] = true;\n\n return verificationMethodTypes;\n }, {});\n\n this.twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n this.verificationMethods = verificationMethods;\n this._cdRef.markForCheck();\n });\n }\n\n public get defaultSms(): boolean {\n return this.twoFactorManageService.smsVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultApp(): boolean {\n return this.twoFactorManageService.appVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultEmail(): boolean {\n return this.twoFactorManageService.emailVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get textHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms);\n }\n\n public get appHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.App);\n }\n\n public get emailHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email);\n }\n\n public textMessageManage(): void {\n this._dialog.open(NumbersComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n defaultCountry: this._defaultCountry,\n },\n });\n }\n\n public textMessageAdd(): void {\n this.twoFactorManageService.addSms$(this._defaultCountry)\n .subscribe();\n }\n\n public emailMessageManage(): void {\n this._dialog.open(EmailsComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n },\n });\n }\n\n public emailMessageAdd(): void {\n this.twoFactorManageService.addEmail$()\n .subscribe();\n }\n\n public appRemove(): void {\n const verificationMethod = this.verificationMethods\n .find((_verificationMethod) => {\n return _verificationMethod.type === VerificationMethodType.App;\n });\n\n if(verificationMethod) {\n this.twoFactorManageService.accountVerify$()\n .pipe(\n switchMap(() => this.twoFactorManageService.verificationMethodDelete$(verificationMethod)),\n )\n .subscribe(() => {\n this._message.success('Removed App Authenticator verification method');\n this._cdRef.markForCheck();\n });\n }\n }\n\n public appAdd(): void {\n this.twoFactorManageService.addApp$()\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>2-Step Verification</h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>textsms</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Text Message</span>\n <span *ngIf=\"textHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">{{item.phoneNumber | fsPhone}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"textHasVerificationMethod; else textMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n <ng-template #textMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>email</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Email</span> \n <span *ngIf=\"emailHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">{{item.email}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"emailHasVerificationMethod; else emailMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n <ng-template #emailMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>phone_iphone</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Authenticator App</span>\n <span *ngIf=\"appHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">Verification code is generated by an authenticator app such as Authy or Google Authenticator</div>\n </td>\n <td>\n <button \n *ngIf=\"appHasVerificationMethod; else appMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n <ng-template #appMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"appAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr> \n </table> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TwoFactorManageService } from '../../services';\nimport { ManageMethodsComponent } from '../manage-methods';\nimport { IFsVerificationMethod } from '../../../../interfaces';\nimport { VerificationMethodType } from '../../../../enums';\n\n\n@Component({\n selector: 'fs-2fa-manage',\n templateUrl: './2fa-manage.component.html',\n styleUrls: ['./2fa-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TwoFactorManageService],\n})\nexport class Fs2faManageComponent implements OnDestroy, OnInit {\n\n @Input() public accountVerify: () => Observable<any>;\n @Input() public defaultCountry: string;\n @Input() public verificationMethodTypes: VerificationMethodType[];\n @Input() public verificationMethodsFetch: () => Observable<IFsVerificationMethod[]>;\n @Input() public verificationMethodDelete: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n @Input() public verificationMethodCreate: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n @Input() public verificationMethodDefault: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n @Input() public verificationMethodVerify: (code: string, trustDevice) => Observable<any>;\n @Input() public verificationMethodResend: () => Observable<any>;\n\n public statuses;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _twoFactorManageService: TwoFactorManageService,\n ) {}\n\n public ngOnInit(): void {\n this.verificationMethodTypes = this.verificationMethodTypes || [\n VerificationMethodType.Sms,\n VerificationMethodType.Email,\n VerificationMethodType.App\n ];\n\n this._twoFactorManageService.registerVerificationMethodsFetch(this.verificationMethodsFetch);\n this._twoFactorManageService.registerVerificationMethodDelete(this.verificationMethodDelete);\n this._twoFactorManageService.registerVerificationMethodCreate(this.verificationMethodCreate);\n this._twoFactorManageService.registerVerificationMethodVerify(this.verificationMethodVerify);\n this._twoFactorManageService.registerVerificationMethodResend(this.verificationMethodResend);\n this._twoFactorManageService.registerVerificationMethodDefault(this.verificationMethodDefault);\n this._twoFactorManageService.registerAccountVerify(this.accountVerify);\n\n\n this._twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n const types = {\n sms: 'Text Message',\n email: 'Email',\n app: 'Authenticator App',\n };\n\n this.statuses = Object.keys(\n verificationMethods.reduce((accum, verificationMethod) => {\n accum[verificationMethod.type] = true;\n\n return accum;\n }, {}),\n )\n .map((type) => {\n return types[type];\n });\n\n this._cdRef.markForCheck();\n });\n\n this._twoFactorManageService.verificationMethodsFetch();\n }\n\n public manage() {\n const dialogRef = this._dialog.open(ManageMethodsComponent, {\n autoFocus: false,\n data: {\n defaultCountry: this.defaultCountry,\n twoFactorManageService: this._twoFactorManageService,\n verificationMethodTypes: this.verificationMethodTypes,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public reload(): void {\n this._twoFactorManageService.verificationMethodsFetch();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}\n","<fs-label-field>\n <fs-label>Status</fs-label>\n <ng-container *ngIf=\"statuses\">\n <ng-container *ngIf=\"statuses.length === 1\">\n {{statuses[0]}} verification is enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length > 1\">\n {{statuses.join(', ')}} verifications are enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length === 0\">\n No verification methods are enabled\n </ng-container>\n </ng-container>\n</fs-label-field>","import { NgModule } from '@angular/core';\n\nimport { DefaultedComponent } from './components/defaulted';\n\n\n@NgModule({\n declarations: [\n DefaultedComponent,\n ],\n exports: [DefaultedComponent],\n})\nexport class DefautledModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\n\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsPhoneModule } from '@firestitch/phone';\nimport { FsCountryModule } from '@firestitch/country';\n\nimport { VerificationMethodsComponent } from './components/verification-methods/verification-methods.component';\nimport { DefautledModule } from '../defaulted/defaulted.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatIconModule,\n\n FsListModule,\n FsPhoneModule,\n FsCountryModule,\n\n DefautledModule,\n ],\n declarations: [\n VerificationMethodsComponent,\n ],\n exports: [VerificationMethodsComponent],\n})\nexport class Fs2faVerificationMethodsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsPhoneModule } from '@firestitch/phone';\nimport { FsCountryModule } from '@firestitch/country';\n\n\nimport { CodeInputModule } from '../code-input';\nimport { Fs2faManageComponent } from './components/2fa-manage';\nimport { ManageMethodsComponent } from './components/manage-methods';\nimport { NumbersComponent } from './components/numbers';\nimport { AppComponent } from './components/app';\nimport { EmailComponent } from './components/email';\nimport { NumberComponent } from './components/number';\nimport { EmailsComponent } from './components/emails';\nimport { ResendModule } from '../resend/resend.module';\nimport { DefautledModule } from '../defaulted/defaulted.module';\nimport { Fs2faVerificationModule } from '../verification/fs-2fa-verification.module';\nimport { Fs2faVerificationMethodsModule } from '../verification-methods';\nimport { QrCodeComponent } from './components/qr-code';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatCheckboxModule,\n\n FsDialogModule,\n FsListModule,\n FsFormModule,\n FsLabelModule,\n FsPhoneModule,\n FsSkeletonModule,\n FsCountryModule,\n\n CodeInputModule,\n\n ResendModule,\n DefautledModule,\n Fs2faVerificationModule,\n Fs2faVerificationMethodsModule,\n ],\n declarations: [\n Fs2faManageComponent,\n ManageMethodsComponent,\n NumbersComponent,\n AppComponent,\n EmailComponent,\n NumberComponent,\n EmailsComponent,\n QrCodeComponent,\n ],\n exports: [Fs2faManageComponent],\n})\nexport class Fs2faManageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-2fa.js","sources":["../../src/app/enums/verification-method-type.enum.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.html","../../src/app/modules/code-input/components/code-input/code-input.component.ts","../../src/app/modules/code-input/components/code-input/code-input.component.html","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.ts","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.html","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.ts","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.html","../../src/app/modules/code-input/code-input.module.ts","../../src/app/modules/resend/components/resend/resend.component.ts","../../src/app/modules/resend/components/resend/resend.component.html","../../src/app/modules/resend/resend.module.ts","../../src/app/modules/verification/directives/2fa-verification-resend.directive.ts","../../src/app/modules/verification/fs-2fa-verification.module.ts","../../src/app/modules/manage/components/qr-code/qr-code.component.ts","../../src/app/modules/manage/components/qr-code/qr-code.component.html","../../src/app/modules/manage/components/app/app.component.ts","../../src/app/modules/manage/components/app/app.component.html","../../src/app/modules/manage/components/email/email.component.ts","../../src/app/modules/manage/components/email/email.component.html","../../src/app/modules/manage/components/number/number.component.ts","../../src/app/modules/manage/components/number/number.component.html","../../src/app/modules/manage/services/two-factor-manage.service.ts","../../src/app/modules/defaulted/components/defaulted/defaulted.component.ts","../../src/app/modules/defaulted/components/defaulted/defaulted.component.html","../../src/app/modules/verification-methods/components/verification-methods/verification-methods.component.ts","../../src/app/modules/verification-methods/components/verification-methods/verification-methods.component.html","../../src/app/modules/manage/components/numbers/numbers.component.ts","../../src/app/modules/manage/components/numbers/numbers.component.html","../../src/app/modules/manage/components/emails/emails.component.ts","../../src/app/modules/manage/components/emails/emails.component.html","../../src/app/modules/manage/components/manage-methods/manage-methods.component.ts","../../src/app/modules/manage/components/manage-methods/manage-methods.component.html","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.ts","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.html","../../src/app/modules/defaulted/defaulted.module.ts","../../src/app/modules/verification-methods/fs-2f-verification-methods.module.ts","../../src/app/modules/manage/fs-2f-manage.module.ts","../../src/firestitch-2fa.ts"],"sourcesContent":["export enum VerificationMethodType {\n Sms = 'sms',\n Email = 'email',\n App = 'app',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\n\n@Component({\n templateUrl: './2fa-verification-methods.component.html',\n styleUrls: ['./2fa-verification-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2faVerificationMethodsComponent {\n\n public verificationMethod: IFsVerificationMethod;\n public phone: string;\n public code: string;\n public verificationMethods: Record<string, IFsVerificationMethod[]>;\n public readonly verificationMethodType = VerificationMethodType;\n\n private _selectVerificationMethod: (IFsVerificationMethod) => Observable<IFsVerificationMethod>; \n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n private _dialogData: any,\n private _dialogRef: MatDialogRef<Fs2faVerificationMethodsComponent>,\n ) {\n this._selectVerificationMethod = _dialogData.selectVerificationMethod;\n this._setActiveMethod();\n this._initMethods(_dialogData.verificationMethods);\n }\n\n public compareWith(o1, o2) {\n return o1 && o2 && o1.id === o2.id\n }\n\n public setVerificationMethod = () => {\n return this._selectVerificationMethod(this.verificationMethod)\n .pipe(\n tap((method: IFsVerificationMethod) => {\n this._dialogRef.close(method);\n })\n );\n };\n\n private _setActiveMethod(): void {\n this.verificationMethod = this._dialogData?.verificationMethod;\n }\n\n private _initMethods(verificationMethods): void {\n this.verificationMethods = verificationMethods\n .reduce((acc, method) => {\n if (!acc[method.type]) {\n acc[method.type] = [];\n }\n\n acc[method.type].push(method);\n\n return acc;\n }, {});\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\" [dirtySubmitButton]=\"false\">\n <mat-dialog-content>\n <ng-container>\n <fs-radio-group [(ngModel)]=\"verificationMethod\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of verificationMethods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n textsms\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Send verification code to a mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Send verification code to an email address\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.App\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n phone_iphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Authenticator App</div>\n <div class=\"method-subtitle\">\n Send verification code to your authenticator app\n </div>\n </div>\n </div>\n </ng-container> \n </ng-container>\n\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n {{ method.phoneNumber }}\n </ng-container>\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n {{ method.email }}\n </ng-container>\n <ng-container *ngSwitchCase=\"verificationMethodType.App\">\n Authenticator App\n </ng-container> \n </ng-container>\n </mat-radio-button>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ViewChild } from '@angular/core';\nimport { FsCodeInputComponent } from '@firestitch/code-input';\n\n\n@Component({\n selector: 'app-code-input',\n templateUrl: './code-input.component.html',\n styleUrls: ['./code-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeInputComponent {\n\n @ViewChild(FsCodeInputComponent)\n public codeInput: FsCodeInputComponent;\n\n @Input() public codeLength: number;\n @Input() public code;\n\n @Output() public codeCompleted = new EventEmitter();\n @Output() public codeChanged = new EventEmitter();\n \n public focus(): void {\n this.codeInput.focusOnField(0);\n }\n}","<fs-code-input\n [codeLength]=\"6\"\n [ngModel]=\"code\"\n name=\"code\"\n [isPrevFocusableAfterClearing]=\"false\"\n (completed)=\"codeCompleted.emit($event)\"\n (ngModelChange)=\"codeChanged.emit($event)\">\n</fs-code-input>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { CodeInputComponent } from '../../../../modules/code-input/components/code-input';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\n\n@Component({\n selector: 'fs-2fa-verification-code',\n templateUrl: './2fa-verification-code.component.html',\n styleUrls: ['./2fa-verification-code.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useExisting: NgForm,\n },\n ],\n})\nexport class Fs2faVerificationCodeComponent {\n\n @ViewChild(CodeInputComponent)\n public codeInputComponent: CodeInputComponent;\n\n @Input()\n public type: VerificationMethodType;\n\n @Input()\n public recipient: string;\n\n @Input()\n public code;\n\n @Output()\n public codeChanged = new EventEmitter<string>();\n\n @Output()\n public codeCompleted = new EventEmitter<void>();\n\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n private _form: FsFormDirective,\n ) {}\n\n public codeChange(code): void {\n this.code = code;\n this.codeChanged.emit(this.code);\n this._form.dirty();\n }\n\n public focus(): void {\n this.codeInputComponent.focus();\n }\n\n}\n","<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsDialog } from '@firestitch/dialog';\n\nimport { filter, finalize, takeUntil, tap } from 'rxjs/operators';\n\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\nimport { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';\n\n\n@Component({\n selector: 'fs-2fa-verification',\n templateUrl: './2fa-verification.component.html',\n styleUrls: ['./2fa-verification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush, \n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n})\nexport class Fs2faVerificationComponent implements OnDestroy, AfterViewInit, OnInit {\n\n @ViewChild(Fs2faVerificationCodeComponent)\n public verificationCodeComponent: Fs2faVerificationCodeComponent;\n\n @Input()\n public verificationMethod: IFsVerificationMethod;\n\n @Input()\n public resend: () => Observable<void>;\n\n @Input()\n public showTrustedDevice = true;\n\n @Input()\n public trustDevice = true;\n\n @Input()\n public trustDays;\n\n @Input()\n public formatRecipient = false;\n\n @Input()\n public getVerificationMethods: () => Observable<IFsVerificationMethod[]>;\n\n @Input()\n public selectVerificationMethod: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n @Output()\n public codeChanged = new EventEmitter<unknown>();\n\n @Output()\n public codeCompleted = new EventEmitter<unknown>();\n\n @Output()\n public trustDeviceChange = new EventEmitter<boolean>();\n\n public code = '';\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: FsDialog,\n private _message: FsMessage,\n ) {}\n\n public get recipient(): string {\n if(this.verificationMethod.type === VerificationMethodType.Email) {\n return this.verificationMethod.email;\n }\n\n if(this.verificationMethod.type === VerificationMethodType.Sms) {\n return this.verificationMethod.phoneNumber;\n }\n }\n\n public ngOnInit(): void {\n this.codeChanged\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((code: string) => {\n this.code = code;\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngAfterViewInit(): void {\n this.verificationCodeComponent.focus(); \n }\n\n public resendCode(): Observable<any> {\n return this.resend()\n .pipe(\n tap(() => {\n this.code = '';\n this._message.success('Resent Code');\n }),\n finalize(() => {\n this.verificationCodeComponent.focus(); \n }),\n );\n }\n\n public showVerificationMethods(): void {\n this.getVerificationMethods()\n .subscribe((verificationMethods) => {\n this._dialog.open(\n Fs2faVerificationMethodsComponent,\n {\n data: {\n verificationMethod: this.verificationMethod,\n verificationMethods,\n selectVerificationMethod: this.selectVerificationMethod,\n }\n }\n )\n .afterClosed()\n .pipe(\n filter((verificationMethod) => !!verificationMethod),\n )\n .subscribe((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.code = '';\n this._cdRef.markForCheck();\n\n setTimeout(() => {\n this.verificationCodeComponent.focus();\n });\n });\n });\n }\n\n}\n","<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n Trust device\n <div class=\"small\">\n Bypass 2-Step Verification on this browser <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> unless you clear cookies.\n </div>\n </mat-checkbox>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsCodeInputModule } from '@firestitch/code-input';\n\nimport { CodeInputComponent } from './components/code-input';\n\n\n@NgModule({\n imports: [\n FormsModule,\n \n FsCodeInputModule,\n ],\n declarations: [\n CodeInputComponent,\n ],\n exports: [\n CodeInputComponent,\n ],\n})\nexport class CodeInputModule {\n}\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-resend',\n templateUrl: './resend.component.html',\n styleUrls: ['./resend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResendComponent {\n\n @Input() public resend: () => Observable<any>;\n \n public resendInProgress = false;\n\n private _destroy$ = new Subject();\n \n constructor(\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public resendClick(): void {\n this.resendInProgress = true;\n this.resend()\n .pipe(\n finalize(() => {\n this.resendInProgress = false; \n this._cdRef.markForCheck(); \n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}","<ng-container *ngIf=\"!resendInProgress else sending\">\n Didn't receive a code? <a (click)=\"resendClick()\">Resend</a>\n</ng-container>\n<ng-template #sending>\n <div class=\"sending\">\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </div>\n</ng-template>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { ResendComponent } from './components/resend';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n MatProgressSpinnerModule,\n ],\n declarations: [\n ResendComponent,\n ],\n exports: [\n ResendComponent,\n ],\n})\nexport class ResendModule {\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { finalize } from 'rxjs/operators';\n\nimport { Fs2faVerificationComponent } from '../components/2fa-verification/2fa-verification.component';\n\n@Directive({\n selector: '[fs2faVerificationResend]',\n})\nexport class Fs2faVerificationResendDirective { \n \n @Input('fs2faVerificationResend') public verification: Fs2faVerificationComponent;\n\n @HostListener('click')\n public click() {\n this._button.disabled = true;\n this.verification.resendCode()\n .pipe(\n finalize(() => this._button.disabled = false),\n )\n .subscribe();\n }\n\n public constructor(\n private _button: MatButton,\n ) {}\n\n}","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { Fs2faVerificationComponent } from './components/2fa-verification/2fa-verification.component';\nimport { Fs2faVerificationCodeComponent } from './components/2fa-verification-code/2fa-verification-code.component';\nimport { Fs2faVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';\n\nimport { CodeInputModule } from '../code-input';\nimport { ResendModule } from '../resend/resend.module';\nimport { Fs2faVerificationResendDirective } from './directives';\nimport { FsPhoneModule } from '@firestitch/phone';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatRadioModule,\n MatCheckboxModule,\n\n FsFormModule,\n FsRadioGroupModule,\n FsDialogModule,\n FsSkeletonModule,\n FsPhoneModule,\n FsSkeletonModule,\n\n ResendModule,\n CodeInputModule,\n ],\n declarations: [\n Fs2faVerificationComponent,\n Fs2faVerificationCodeComponent,\n Fs2faVerificationMethodsComponent,\n Fs2faVerificationResendDirective,\n ],\n exports: [\n Fs2faVerificationComponent,\n Fs2faVerificationResendDirective,\n ],\n providers: [],\n})\nexport class Fs2faVerificationModule {}\n","import {\n Component, OnInit, ChangeDetectorRef, Input,\n} from '@angular/core';\n\nimport QRCode from 'qrcode';\n\n@Component({\n selector: 'app-qr-code',\n templateUrl: './qr-code.component.html',\n styleUrls: ['./qr-code.component.scss'],\n})\nexport class QrCodeComponent implements OnInit {\n\n @Input() public value;\n\n public image;\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n QRCode.toDataURL(this.value, { \n errorCorrectionLevel: 'H',\n width: 300,\n height: 300,\n })\n .then((url) => {\n this.image = url;\n this._cdRef.markForCheck();\n })\n .catch((err) => {\n console.error(err)\n });\n \n }\n\n\n}\n","<ng-container *ngIf=\"image\">\n <img [src]=\"image\">\n</ng-container>","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\nimport { switchMap, tap } from 'rxjs/operators';\n\nimport { TwoFactorManageService } from '../../services';\nimport { of } from 'rxjs';\n\n\n@Component({\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements OnInit {\n\n @ViewChild(FsFormDirective)\n public form: FsFormDirective;\n\n public twoFactorManageService: TwoFactorManageService;\n public mode: 'qr-code' | 'code-input' = 'qr-code';\n public accountId;\n public verificationMethod;\n public qrCodeUrl;\n public code;\n public default; \n public appType: 'google' | 'authy';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<AppComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.accountId = this._data.accountId;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public appTypeGoogle(): void {\n this.appTypeSelect('google');\n }\n\n public appTypeAuthy(): void {\n this.appTypeSelect('authy');\n }\n\n public appTypeSelect(appType): void {\n this.appType = appType;\n this.twoFactorManageService.verificationMethodCreate$({\n type: VerificationMethodType.App,\n })\n .subscribe((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.qrCodeUrl = verificationMethod.qrCodeUrl;\n this._cdRef.markForCheck();\n });\n }\n\n public codeCompleted(): void {\n this.form.triggerSubmit();\n }\n\n public codeChanged(code): void {\n this.code = code;\n this.form.dirty();\n }\n\n public next(): void {\n this.mode = 'code-input';\n }\n\n public verify = () => {\n return this.twoFactorManageService.verificationMethodVerify$(this.code, true)\n .pipe(\n switchMap(() => {\n return this.default && this.twoFactorManageService.verificationMethodDefault$ ?\n this.twoFactorManageService.verificationMethodDefault$(this.verificationMethod) :\n of(true);\n }),\n tap(() => {\n this._message.success('Created app authenticator verification method');\n this._dialogRef.close(true);\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>Authenticator App Setup</h1>\n <mat-dialog-content>\n\n <div *ngIf=\"mode === 'qr-code'\" class=\"qr-code\">\n <ng-container *ngIf=\"appType\">\n <ol>\n <li>\n <ng-container *ngIf=\"appType === 'authy'\">\n Install the Authy Authenticator App from the <a href=\"https://apps.apple.com/us/app/authy/id494168017\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.authy.authy\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n\n <ng-container *ngIf=\"appType === 'google'\">\n Install the Google Authenticator App from the <a href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n </li>\n <ng-container *ngIf=\"appType === 'authy'\">\n <li>\n Open the Authy app and select <b>Add Account</b>.\n </li>\n <li>\n Select <b>Scan QR Code</b> and scan the QR code below.\n </li>\n </ng-container> \n <ng-container *ngIf=\"appType === 'google'\">\n <li>\n Open the Google Authentictor app and click the <b>Plus icon</b> in the lower right corner.\n </li>\n <li>\n Select <b>Scan a QR code</b> and scan the QR code below.\n </li>\n </ng-container>\n </ol>\n\n <ng-container *fsSkeleton=\"qrCodeUrl\">\n <app-qr-code\n [value]=\"qrCodeUrl\">\n </app-qr-code>\n </ng-container>\n </ng-container>\n\n <div class=\"app-types\" *ngIf=\"!appType\">\n <p>Select the Authenticator App you prefer</p>\n\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg width=\"50\" height=\"50\" viewBox=\"0 0 256 256\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"xMidYMid\"><path d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\" fill=\"#EC1C24\"/><path d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\" fill=\"#FFF\"/></svg>\n </a>\n Authy\n </span>\n \n <span>\n <a (click)=\"appTypeGoogle()\"> \n <svg width=\"50\" height=\"50\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\" fill=\"#a0a0a0\"/>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"/>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"/>\n </g>\n <path d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\" fill=\"#686868\"/>\n <path d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\" fill=\"#c3c3c3\"/>\n <path d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\" fill=\"#474747\"/>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"/>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"/>\n </g>\n <path d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\" fill=\"#b0b0b0\"/>\n <path d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\" fill=\"#939393\"/>\n <path d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\" fill=\"#767676\"/>\n <path d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\" fill=\"#bebebe\"/>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n </div>\n \n </div>\n\n <div *ngIf=\"mode === 'code-input'\" class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n\n <app-code-input\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\">\n </app-code-input>\n \n <div class=\"checkboxes\">\n <mat-checkbox name=\"default\" [(ngModel)]=\"default\" [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </div>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <ng-container *ngIf=\"appType\">\n <button\n *ngIf=\"mode === 'qr-code'\"\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n <button\n *ngIf=\"mode === 'code-input'\"\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button> \n </ng-container>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\n\n@Component({\n templateUrl: './email.component.html',\n styleUrls: ['./email.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public email;\n public code;\n public default;\n public verificationMethod = null;\n public trustDevice = true;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend = (): Observable<void> => {\n return this.twoFactorManageService.verificationMethodResend()\n .pipe(\n tap(() => {\n this._message.success('Resent verification code');\n }),\n );\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify$(this.code, this.trustDevice)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created email verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate$({\n type: VerificationMethodType.Email,\n email: this.email,\n default: this.default,\n })\n .pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this email for verifying your account security. </p>\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\n\n@Component({\n templateUrl: './number.component.html',\n styleUrls: ['./number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public phone;\n public code;\n public default;\n public trustDevice = true;\n public verificationMethod = null;\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<NumberComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend = (): Observable<void> => {\n return this.twoFactorManageService.verificationMethodResend()\n .pipe(\n tap(() => {\n this._message.success('Resent verification code');\n }),\n );\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify$(this.code, this.trustDevice)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created text message verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate$({\n type: VerificationMethodType.Sms,\n phoneNumber: this.phone.number,\n phoneCode: this.phone.countryCode,\n phoneCountry: this.phone.isoCode,\n default: this.default,\n })\n .pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\" [autocomplete]=\"false\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text Message Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\"\n [formatRecipient]=\"true\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.</p>\n <mat-form-field>\n <mat-label>Phone number</mat-label>\n <fs-phone-field\n [(ngModel)]=\"phone\"\n [country]=\"defaultCountry\"\n name=\"phone\"\n [mode]=\"'object'\"\n autocomplete=\"off\"\n [required]=\"true\">\n </fs-phone-field>\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { AppComponent } from '../components/app';\nimport { VerificationMethodType } from '../../../enums/verification-method-type.enum';\nimport { EmailComponent } from '../components/email';\nimport { NumberComponent } from '../components/number';\nimport { IFsVerificationMethod } from '../../../interfaces';\n\n\n@Injectable()\nexport class TwoFactorManageService implements OnDestroy {\n\n private _destroy$ = new Subject();\n\n private _verificationMethodsFetch: (query: any) => Observable<any[]>;\n private _verificationMethodCreate: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n private _verificationMethodDelete: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n private _verificationMethodDefault: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n private _verificationMethodVerify: (code, trustDevice: boolean) => Observable<any>;\n private _verificationMethodResend: () => Observable<any>;\n private _accountVerify: () => Observable<any[]>;\n private _verificationMethods$ = new BehaviorSubject<any[]>([]);\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public get verificationMethods$() {\n return this._verificationMethods$\n .pipe(\n takeUntil(this._destroy$),\n );\n }\n \n public get verificationMethods() {\n return this._verificationMethods$.getValue();\n }\n\n public get hasVerificationMethods(): boolean {\n return !!this._verificationMethods$.getValue().length;\n }\n\n public get emailVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Email);\n }\n\n public get smsVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Sms);\n }\n\n public get appVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.App);\n }\n \n public getVerificationMethods(type) {\n return this.verificationMethods\n .filter((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n \n public hasVerificationMethod(type) {\n return this.verificationMethods\n .some((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n\n public registerVerificationMethodDefault(value) {\n this._verificationMethodDefault = value;\n }\n\n public registerVerificationMethodResend(value) {\n this._verificationMethodResend = value;\n }\n\n public registerVerificationMethodsFetch(value) {\n this._verificationMethodsFetch = value;\n }\n\n public registerVerificationMethodDelete(value) {\n this._verificationMethodDelete = value;\n }\n\n public registerVerificationMethodCreate(value) {\n this._verificationMethodCreate = value;\n }\n\n public registerVerificationMethodVerify(value) {\n this._verificationMethodVerify = value;\n }\n\n public registerAccountVerify(value) {\n this._accountVerify = value;\n }\n\n public get hasVerificationMethodResend() {\n return !!this._verificationMethodResend;\n }\n\n public get hasVerificationMethodDefault() {\n return !!this._verificationMethodDefault;\n }\n\n public get hasVerificationMethodsFetch() {\n return !!this._verificationMethodsFetch;\n }\n\n public get hasVerificationMethodDelete() {\n return !!this._verificationMethodDelete;\n }\n\n public get hasVerificationMethodCreate() {\n return !!this._verificationMethodCreate;\n }\n\n public get hasVerificationMethodVerify() {\n return !!this._verificationMethodVerify;\n }\n\n public verificationMethodDelete$(verificationMethod): Observable<any> {\n return this._verificationMethodDelete(verificationMethod)\n .pipe(\n tap(() => {\n this.verificationMethodsFetch();\n }),\n );\n }\n\n public verificationMethodVerify$(code, trustDevice): Observable<any> {\n return this._verificationMethodVerify(code, trustDevice)\n .pipe(\n tap(() => {\n this.verificationMethodsFetch();\n }),\n );\n }\n\n public verificationMethodCreate$(verificationMethod): Observable<any> {\n return this._verificationMethodCreate(verificationMethod);\n }\n\n public verificationMethodDefault$(verificationMethod): Observable<any> {\n return this._verificationMethodDefault(verificationMethod);\n }\n\n public verificationMethodResend(): Observable<any> {\n return this._verificationMethodResend();\n }\n\n public verificationMethodsFetch(query?: any) {\n this.verificationMethodsFetch$(query)\n .subscribe();\n }\n\n public verificationMethodsFetch$(query?: any): Observable<any> {\n return this._verificationMethodsFetch(query)\n .pipe(\n tap((verificationMethods) => {\n this._verificationMethods$.next(verificationMethods);\n })\n );\n }\n\n public accountVerify$(): Observable<any> {\n return this._accountVerify ? this._accountVerify() : of(true);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public addSms$(defaultCountry): Observable<any>{\n return this.accountVerify$()\n .pipe(\n switchMap(() => this._dialog.open(NumberComponent, {\n data: {\n defaultCountry,\n twoFactorManageService: this,\n },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodsFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addEmail$(): Observable<any>{\n return this.accountVerify$()\n .pipe(\n switchMap(() => this._dialog.open(EmailComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodsFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addApp$(): Observable<any>{\n return this.accountVerify$()\n .pipe(\n switchMap(() => this._dialog.open(AppComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodsFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n}\n","import {\n Component, ChangeDetectionStrategy,\n} from '@angular/core';\n\n\n@Component({\n selector: 'app-defaulted',\n templateUrl: './defaulted.component.html',\n styleUrls: ['./defaulted.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultedComponent {\n\n}\n","<span>Default</span>","import {\n Component, ChangeDetectionStrategy, OnInit, Input, ViewChild, Output, EventEmitter,\n} from '@angular/core';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nimport { IFsVerificationMethod } from '../../../../interfaces';\nimport { VerificationMethodType } from '../../../../enums';\nimport { TwoFactorManageService } from '../../../manage/services';\n\n\n@Component({\n selector: 'fs-2fa-verification-methods',\n templateUrl: './verification-methods.component.html',\n styleUrls: ['./verification-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VerificationMethodsComponent implements OnInit {\n\n @ViewChild(FsListComponent)\n public list: FsListComponent;\n\n @Input() public type: VerificationMethodType;\n @Input() public accountVerify: () => Observable<any>;\n @Input() public verificationMethodsFetch: (query: any) => Observable<IFsVerificationMethod[]>;\n @Input() public verificationMethodDelete: (verificationMethod: IFsVerificationMethod) => Observable<any>;\n @Input() public verificationMethodDefault: (verificationMethod: IFsVerificationMethod) => Observable<any>;\n @Input() public twoFactorManageService: TwoFactorManageService;\n\n @Output() public deleted = new EventEmitter();\n \n public listConfig: FsListConfig;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n private _prompt: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n if(!this.verificationMethodDefault && this.twoFactorManageService?.hasVerificationMethodDefault) {\n this.verificationMethodDefault = (verificationMethod: IFsVerificationMethod) => {\n return this.twoFactorManageService.verificationMethodDefault$(verificationMethod);\n }\n }\n \n if(!this.verificationMethodDelete && this.twoFactorManageService?.hasVerificationMethodDelete) {\n this.verificationMethodDelete = (verificationMethod: IFsVerificationMethod) => {\n return this.twoFactorManageService.verificationMethodDelete$(verificationMethod);\n }\n }\n \n if(!this.verificationMethodsFetch && this.twoFactorManageService?.hasVerificationMethodsFetch) {\n this.verificationMethodsFetch = (query) => {\n return this.twoFactorManageService.verificationMethodsFetch$(query);\n }\n }\n \n if(!this.accountVerify && this.twoFactorManageService?.hasVerificationMethodVerify) {\n this.accountVerify = () => {\n return this.twoFactorManageService?.accountVerify$();\n }\n }\n\n this.listConfig = {\n paging: false,\n rowActions: [\n {\n click: (verificationMethod) => {\n this.accountVerify()\n .pipe(\n switchMap(() => this.verificationMethodDefault(verificationMethod)),\n )\n .subscribe(() => {\n this.list.reload();\n });\n },\n show: (data) => {\n return !!this.verificationMethodDefault && !data.default;\n },\n label: 'Set as Default',\n },\n {\n click: (verificationMethod) => {\n this._prompt.confirm({\n title: 'Confirm',\n template: 'Would you like to delete this verification method?',\n })\n .pipe(\n switchMap(() => this.accountVerify()),\n switchMap(() => this.verificationMethodDelete(verificationMethod)),\n )\n .subscribe(() => {\n this.deleted.emit();\n this.list.reload();\n });\n },\n show: () => {\n return !!this.verificationMethodDelete;\n },\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n query = {\n ...query,\n type: this.type,\n };\n\n return this.verificationMethodsFetch(query) \n .pipe(\n map((verificationMethods) => ({\n data: verificationMethods.filter((verificationMethod) => {\n return !this.type || verificationMethod.type === this.type;\n }),\n }),\n ),\n );\n },\n };\n }\n\n public reload(): void {\n this.list.reload();\n }\n}\n","<fs-list [config]=\"listConfig\">\n <fs-list-column class=\"col-icon\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.type === VerificationMethodType.Sms\">\n <mat-icon>textsms</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.Email\">\n <mat-icon>email</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.App\">\n <mat-icon>phone_iphone</mat-icon>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"col-name\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"row\">\n <ng-container *ngIf=\"row.type === VerificationMethodType.Sms\">\n <div class=\"row\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> \n <span>{{row.phoneNumber | fsPhone}}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.Email\">\n {{row.email}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.App\">\n App\n </ng-container>\n\n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>","import {\n Component, Inject, ChangeDetectionStrategy, ViewChild,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodsComponent } from '../../../../modules/verification-methods/components/verification-methods';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './numbers.component.html',\n styleUrls: ['./numbers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumbersComponent {\n\n @ViewChild(VerificationMethodsComponent) \n public verificationMethods: VerificationMethodsComponent;\n\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any, \n private _dialogRef: MatDialogRef<NumbersComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n }\n\n public add(): void {\n this.twoFactorManageService.addSms$(this.defaultCountry)\n .subscribe(() => {\n this.verificationMethods.reload();\n });\n }\n\n public deleted(): void {\n this._message.success('Deleted text message verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n <mat-icon>textsms</mat-icon> Text Message Numbers\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Sms\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Number\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy, ViewChild,\n} from '@angular/core';\n\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodsComponent } from '../../../../modules/verification-methods/components/verification-methods';\n\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './emails.component.html',\n styleUrls: ['./emails.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailsComponent {\n\n @ViewChild(VerificationMethodsComponent) \n public verificationMethods: VerificationMethodsComponent;\n\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailsComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n }\n\n public add(): void {\n this.twoFactorManageService.addEmail$()\n .subscribe(() =>{\n this.verificationMethods.reload();\n });\n }\n\n public deleted(): void {\n this._message.success('Deleted email verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n <mat-icon>email</mat-icon> Emails\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Email\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\n\nimport { NumbersComponent } from '../numbers';\nimport { EmailsComponent } from '../emails';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { FsMessage } from '@firestitch/message';\nimport { switchMap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './manage-methods.component.html',\n styleUrls: ['./manage-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManageMethodsComponent implements OnInit, OnDestroy {\n\n public twoFactorManageService: TwoFactorManageService;\n public verificationMethods;\n public verificationMethodTypes = {};\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject();\n private _defaultCountry: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._defaultCountry = this._data.defaultCountry;\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.verificationMethodTypes = this._data.verificationMethodTypes\n .reduce((verificationMethodTypes, verificationMethodType) => {\n verificationMethodTypes[verificationMethodType] = true;\n\n return verificationMethodTypes;\n }, {});\n\n this.twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n this.verificationMethods = verificationMethods;\n this._cdRef.markForCheck();\n });\n }\n\n public get defaultSms(): boolean {\n return this.twoFactorManageService.smsVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultApp(): boolean {\n return this.twoFactorManageService.appVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultEmail(): boolean {\n return this.twoFactorManageService.emailVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get textHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms);\n }\n\n public get appHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.App);\n }\n\n public get emailHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email);\n }\n\n public textMessageManage(): void {\n this._dialog.open(NumbersComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n defaultCountry: this._defaultCountry,\n },\n });\n }\n\n public textMessageAdd(): void {\n this.twoFactorManageService.addSms$(this._defaultCountry)\n .subscribe();\n }\n\n public emailMessageManage(): void {\n this._dialog.open(EmailsComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n },\n });\n }\n\n public emailMessageAdd(): void {\n this.twoFactorManageService.addEmail$()\n .subscribe();\n }\n\n public appRemove(): void {\n const verificationMethod = this.verificationMethods\n .find((_verificationMethod) => {\n return _verificationMethod.type === VerificationMethodType.App;\n });\n\n if(verificationMethod) {\n this.twoFactorManageService.accountVerify$()\n .pipe(\n switchMap(() => this.twoFactorManageService.verificationMethodDelete$(verificationMethod)),\n )\n .subscribe(() => {\n this._message.success('Removed App Authenticator verification method');\n this._cdRef.markForCheck();\n });\n }\n }\n\n public appAdd(): void {\n this.twoFactorManageService.addApp$()\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>2-Step Verification</h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>textsms</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Text Message</span>\n <span *ngIf=\"textHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">{{item.phoneNumber | fsPhone}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"textHasVerificationMethod; else textMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n <ng-template #textMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>email</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Email</span> \n <span *ngIf=\"emailHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">{{item.email}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"emailHasVerificationMethod; else emailMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n <ng-template #emailMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>phone_iphone</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Authenticator App</span>\n <span *ngIf=\"appHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">Verification code is generated by an authenticator app such as Authy or Google Authenticator</div>\n </td>\n <td>\n <button \n *ngIf=\"appHasVerificationMethod; else appMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n <ng-template #appMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"appAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr> \n </table> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TwoFactorManageService } from '../../services';\nimport { ManageMethodsComponent } from '../manage-methods';\nimport { IFsVerificationMethod } from '../../../../interfaces';\nimport { VerificationMethodType } from '../../../../enums';\n\n\n@Component({\n selector: 'fs-2fa-manage',\n templateUrl: './2fa-manage.component.html',\n styleUrls: ['./2fa-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TwoFactorManageService],\n})\nexport class Fs2faManageComponent implements OnDestroy, OnInit {\n\n @Input() public accountVerify: () => Observable<any>;\n @Input() public defaultCountry: string;\n @Input() public verificationMethodTypes: VerificationMethodType[];\n @Input() public verificationMethodsFetch: () => Observable<IFsVerificationMethod[]>;\n @Input() public verificationMethodDelete: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n @Input() public verificationMethodCreate: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n @Input() public verificationMethodDefault: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n @Input() public verificationMethodVerify: (code: string, trustDevice) => Observable<any>;\n @Input() public verificationMethodResend: () => Observable<any>;\n\n public statuses;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _twoFactorManageService: TwoFactorManageService,\n ) {}\n\n public ngOnInit(): void {\n this.verificationMethodTypes = this.verificationMethodTypes || [\n VerificationMethodType.Sms,\n VerificationMethodType.Email,\n VerificationMethodType.App\n ];\n\n this._twoFactorManageService.registerVerificationMethodsFetch(this.verificationMethodsFetch);\n this._twoFactorManageService.registerVerificationMethodDelete(this.verificationMethodDelete);\n this._twoFactorManageService.registerVerificationMethodCreate(this.verificationMethodCreate);\n this._twoFactorManageService.registerVerificationMethodVerify(this.verificationMethodVerify);\n this._twoFactorManageService.registerVerificationMethodResend(this.verificationMethodResend);\n this._twoFactorManageService.registerVerificationMethodDefault(this.verificationMethodDefault);\n this._twoFactorManageService.registerAccountVerify(this.accountVerify);\n\n\n this._twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n const types = {\n sms: 'Text Message',\n email: 'Email',\n app: 'Authenticator App',\n };\n\n this.statuses = Object.keys(\n verificationMethods.reduce((accum, verificationMethod) => {\n accum[verificationMethod.type] = true;\n\n return accum;\n }, {}),\n )\n .map((type) => {\n return types[type];\n });\n\n this._cdRef.markForCheck();\n });\n\n this._twoFactorManageService.verificationMethodsFetch();\n }\n\n public manage() {\n const dialogRef = this._dialog.open(ManageMethodsComponent, {\n autoFocus: false,\n data: {\n defaultCountry: this.defaultCountry,\n twoFactorManageService: this._twoFactorManageService,\n verificationMethodTypes: this.verificationMethodTypes,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public reload(): void {\n this._twoFactorManageService.verificationMethodsFetch();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}\n","<fs-label-field>\n <fs-label>Status</fs-label>\n <ng-container *ngIf=\"statuses\">\n <ng-container *ngIf=\"statuses.length === 1\">\n {{statuses[0]}} verification is enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length > 1\">\n {{statuses.join(', ')}} verifications are enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length === 0\">\n No verification methods are enabled\n </ng-container>\n </ng-container>\n</fs-label-field>","import { NgModule } from '@angular/core';\n\nimport { DefaultedComponent } from './components/defaulted';\n\n\n@NgModule({\n declarations: [\n DefaultedComponent,\n ],\n exports: [DefaultedComponent],\n})\nexport class DefautledModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\n\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsPhoneModule } from '@firestitch/phone';\nimport { FsCountryModule } from '@firestitch/country';\n\nimport { VerificationMethodsComponent } from './components/verification-methods/verification-methods.component';\nimport { DefautledModule } from '../defaulted/defaulted.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatIconModule,\n\n FsListModule,\n FsPhoneModule,\n FsCountryModule,\n\n DefautledModule,\n ],\n declarations: [\n VerificationMethodsComponent,\n ],\n exports: [VerificationMethodsComponent],\n})\nexport class Fs2faVerificationMethodsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsPhoneModule } from '@firestitch/phone';\nimport { FsCountryModule } from '@firestitch/country';\n\n\nimport { CodeInputModule } from '../code-input';\nimport { Fs2faManageComponent } from './components/2fa-manage';\nimport { ManageMethodsComponent } from './components/manage-methods';\nimport { NumbersComponent } from './components/numbers';\nimport { AppComponent } from './components/app';\nimport { EmailComponent } from './components/email';\nimport { NumberComponent } from './components/number';\nimport { EmailsComponent } from './components/emails';\nimport { ResendModule } from '../resend/resend.module';\nimport { DefautledModule } from '../defaulted/defaulted.module';\nimport { Fs2faVerificationModule } from '../verification/fs-2fa-verification.module';\nimport { Fs2faVerificationMethodsModule } from '../verification-methods';\nimport { QrCodeComponent } from './components/qr-code';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatCheckboxModule,\n\n FsDialogModule,\n FsListModule,\n FsFormModule,\n FsLabelModule,\n FsPhoneModule,\n FsSkeletonModule,\n FsCountryModule,\n\n CodeInputModule,\n\n ResendModule,\n DefautledModule,\n Fs2faVerificationModule,\n Fs2faVerificationMethodsModule,\n ],\n declarations: [\n Fs2faManageComponent,\n ManageMethodsComponent,\n NumbersComponent,\n AppComponent,\n EmailComponent,\n NumberComponent,\n EmailsComponent,\n QrCodeComponent,\n ],\n exports: [Fs2faManageComponent],\n})\nexport class Fs2faManageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/firestitch-2fa.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
/// <amd-module name="@firestitch/2fa" />
|
|
5
|
-
export * from './public_api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
/// <amd-module name="@firestitch/2fa" />
|
|
5
|
+
export * from './public_api';
|