@firestitch/2fa 18.0.9 → 18.0.11
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/modules/verification-setup/services/index.d.ts +1 -0
- package/app/modules/verification-setup/services/verification-setup.service.d.ts +8 -0
- package/app/modules/verification-setup/views/email/email.component.d.ts +2 -2
- package/app/modules/verification-setup/views/verify/verify.component.d.ts +5 -1
- package/esm2022/app/modules/verification-setup/data/verification-method.data.mjs +2 -2
- package/esm2022/app/modules/verification-setup/services/index.mjs +2 -0
- package/esm2022/app/modules/verification-setup/services/verification-setup.service.mjs +22 -0
- package/esm2022/app/modules/verification-setup/verification-setup.module.mjs +4 -1
- package/esm2022/app/modules/verification-setup/views/email/email.component.mjs +13 -10
- package/esm2022/app/modules/verification-setup/views/verify/verify.component.mjs +17 -5
- package/fesm2022/firestitch-2fa.mjs +45 -12
- package/fesm2022/firestitch-2fa.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './verification-setup.service';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class VerificationSetupService {
|
|
3
|
+
private _api;
|
|
4
|
+
private _router;
|
|
5
|
+
signout(): import("rxjs").Observable<any>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VerificationSetupService, never>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<VerificationSetupService>;
|
|
8
|
+
}
|
|
@@ -5,10 +5,10 @@ export declare class EmailComponent implements OnInit {
|
|
|
5
5
|
private _api;
|
|
6
6
|
private _router;
|
|
7
7
|
private _route;
|
|
8
|
-
private _verificationMethodData;
|
|
9
8
|
private _cdRef;
|
|
9
|
+
private _verificationSetupService;
|
|
10
10
|
ngOnInit(): void;
|
|
11
|
-
next: () => import("rxjs").Observable<
|
|
11
|
+
next: () => import("rxjs").Observable<boolean>;
|
|
12
12
|
cancel(): void;
|
|
13
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmailComponent, never>;
|
|
14
14
|
static ɵcmp: i0.ɵɵComponentDeclaration<EmailComponent, "ng-component", never, {}, {}, never, never, false, never>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
1
2
|
import { Observable } from 'rxjs';
|
|
2
3
|
import { IFsVerificationMethod } from '../../../../interfaces';
|
|
3
4
|
import { Fs2faVerificationComponent } from '../../../verification/components/2fa-verification';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class VerifyComponent {
|
|
6
|
+
export declare class VerifyComponent implements OnInit {
|
|
6
7
|
verification: Fs2faVerificationComponent;
|
|
7
8
|
code: any;
|
|
8
9
|
verificationMethod: IFsVerificationMethod;
|
|
@@ -11,6 +12,9 @@ export declare class VerifyComponent {
|
|
|
11
12
|
private _route;
|
|
12
13
|
private _message;
|
|
13
14
|
private _verificationMethodData;
|
|
15
|
+
private _cdRef;
|
|
16
|
+
private _verificationSetupService;
|
|
17
|
+
ngOnInit(): void;
|
|
14
18
|
codeChanged(code: any): void;
|
|
15
19
|
verify: () => Observable<any>;
|
|
16
20
|
resend: () => Observable<void>;
|
|
@@ -21,7 +21,7 @@ export class VerificationMethodData {
|
|
|
21
21
|
}
|
|
22
22
|
account(config = {}) {
|
|
23
23
|
return this._api.post('verifications/methods/account', {}, {
|
|
24
|
-
key: '',
|
|
24
|
+
key: 'verificationMethod',
|
|
25
25
|
...config,
|
|
26
26
|
});
|
|
27
27
|
}
|
|
@@ -31,4 +31,4 @@ export class VerificationMethodData {
|
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationMethodData, decorators: [{
|
|
32
32
|
type: Injectable
|
|
33
33
|
}], ctorParameters: () => [{ type: i1.FsApi }] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLW1ldGhvZC5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3ZlcmlmaWNhdGlvbi1zZXR1cC9kYXRhL3ZlcmlmaWNhdGlvbi1tZXRob2QuZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxLQUFLLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7OztBQU12RCxNQUFNLE9BQU8sc0JBQXNCO0lBR3ZCO0lBRFYsWUFDVSxJQUFXO1FBQVgsU0FBSSxHQUFKLElBQUksQ0FBTztJQUNsQixDQUFDO0lBRUcsTUFBTSxDQUFDLElBQVMsRUFBRSxXQUFvQixFQUFFLFNBQXdCLEVBQUU7UUFDdkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsOEJBQThCLEVBQzlCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUNyQjtZQUNFLEdBQUcsRUFBRSxvQkFBb0I7WUFDekIsR0FBRyxNQUFNO1NBQ1YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUF3QixFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLDhCQUE4QixFQUM5QixFQUFFLEVBQ0Y7WUFDRSxHQUFHLEVBQUUsRUFBRTtZQUNQLEdBQUcsTUFBTTtTQUNWLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxPQUFPLENBQUMsU0FBd0IsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQiwrQkFBK0IsRUFDL0IsRUFBRSxFQUNGO1lBQ0UsR0FBRyxFQUFFLG9CQUFvQjtZQUN6QixHQUFHLE1BQU07U0FDVixDQUNGLENBQUM7SUFDSixDQUFDO3VHQXJDVSxzQkFBc0I7MkdBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRnNBcGksIFJlcXVlc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9hcGknO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZlcmlmaWNhdGlvbk1ldGhvZERhdGE8VCA9IGFueT4ge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FwaTogRnNBcGksXG4gICkge31cblxuICBwdWJsaWMgdmVyaWZ5KGNvZGU6IGFueSwgdHJ1c3REZXZpY2U6IGJvb2xlYW4sIGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwaS5wb3N0KFxuICAgICAgJ3ZlcmlmaWNhdGlvbnMvbWV0aG9kcy92ZXJpZnknLFxuICAgICAgeyBjb2RlLCB0cnVzdERldmljZSB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICd2ZXJpZmljYXRpb25NZXRob2QnLFxuICAgICAgICAuLi5jb25maWcsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVzZW5kKGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwaS5wb3N0KFxuICAgICAgJ3ZlcmlmaWNhdGlvbnMvbWV0aG9kcy9yZXNlbmQnLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGtleTogJycsXG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NvdW50KGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwaS5wb3N0KFxuICAgICAgJ3ZlcmlmaWNhdGlvbnMvbWV0aG9kcy9hY2NvdW50JyxcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBrZXk6ICd2ZXJpZmljYXRpb25NZXRob2QnLFxuICAgICAgICAuLi5jb25maWcsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuXG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './verification-setup.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uLXNldHVwL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3ZlcmlmaWNhdGlvbi1zZXR1cC5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { FsApi } from '@firestitch/api';
|
|
4
|
+
import { finalize } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class VerificationSetupService {
|
|
7
|
+
_api = inject(FsApi);
|
|
8
|
+
_router = inject(Router);
|
|
9
|
+
signout() {
|
|
10
|
+
return this._api
|
|
11
|
+
.post('auth/signout')
|
|
12
|
+
.pipe(finalize(() => {
|
|
13
|
+
this._router.navigateByUrl('/signin');
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationSetupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationSetupService });
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationSetupService, decorators: [{
|
|
20
|
+
type: Injectable
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLXNldHVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uLXNldHVwL3NlcnZpY2VzL3ZlcmlmaWNhdGlvbi1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUcxQyxNQUFNLE9BQU8sd0JBQXdCO0lBRTNCLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUxQixPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDcEIsSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzt1R0FiVSx3QkFBd0I7MkdBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgRnNBcGkgfSBmcm9tICdAZmlyZXN0aXRjaC9hcGknO1xuXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZlcmlmaWNhdGlvblNldHVwU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfYXBpID0gaW5qZWN0KEZzQXBpKTtcbiAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgcHVibGljIHNpZ25vdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwaVxuICAgICAgLnBvc3QoJ2F1dGgvc2lnbm91dCcpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvc2lnbmluJyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -11,6 +11,7 @@ import { FsSkeletonModule } from '@firestitch/skeleton';
|
|
|
11
11
|
import { Fs2faVerificationModule } from '../verification';
|
|
12
12
|
import { Fs2faVerificationMethodsModule } from '../verification-methods';
|
|
13
13
|
import { VerificationMethodData } from './data';
|
|
14
|
+
import { VerificationSetupService } from './services';
|
|
14
15
|
import { VerificationSetupRoutingModule } from './verification-setup-routing.module';
|
|
15
16
|
import { EmailComponent, VerifyComponent } from './views';
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
@@ -31,6 +32,7 @@ export class FsVerificationSetupModule {
|
|
|
31
32
|
VerificationSetupRoutingModule] });
|
|
32
33
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsVerificationSetupModule, providers: [
|
|
33
34
|
VerificationMethodData,
|
|
35
|
+
VerificationSetupService,
|
|
34
36
|
], imports: [CommonModule,
|
|
35
37
|
FormsModule,
|
|
36
38
|
MatButtonModule,
|
|
@@ -67,7 +69,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
67
69
|
],
|
|
68
70
|
providers: [
|
|
69
71
|
VerificationMethodData,
|
|
72
|
+
VerificationSetupService,
|
|
70
73
|
],
|
|
71
74
|
}]
|
|
72
75
|
}] });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLXNldHVwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24tc2V0dXAvdmVyaWZpY2F0aW9uLXNldHVwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQThCMUQsTUFBTSxPQUFPLHlCQUF5Qjt1R0FBekIseUJBQXlCO3dHQUF6Qix5QkFBeUIsaUJBUmxDLGNBQWM7WUFDZCxlQUFlLGFBbEJmLFlBQVk7WUFDWixXQUFXO1lBRVgsZUFBZTtZQUNmLGFBQWE7WUFDYixjQUFjO1lBQ2Qsa0JBQWtCO1lBRWxCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLDhCQUE4QjtZQUM5Qix1QkFBdUI7WUFFdkIsOEJBQThCO3dHQVdyQix5QkFBeUIsYUFMekI7WUFDVCxzQkFBc0I7WUFDdEIsd0JBQXdCO1NBQ3pCLFlBdkJDLFlBQVk7WUFDWixXQUFXO1lBRVgsZUFBZTtZQUNmLGFBQWE7WUFDYixjQUFjO1lBQ2Qsa0JBQWtCO1lBRWxCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLDhCQUE4QjtZQUM5Qix1QkFBdUI7WUFFdkIsOEJBQThCOzsyRkFXckIseUJBQXlCO2tCQTNCckMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUVYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjt3QkFFbEIsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsOEJBQThCO3dCQUM5Qix1QkFBdUI7d0JBRXZCLDhCQUE4QjtxQkFDL0I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGNBQWM7d0JBQ2QsZUFBZTtxQkFDaEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULHNCQUFzQjt3QkFDdEIsd0JBQXdCO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTGFiZWxNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9sYWJlbCc7XG5pbXBvcnQgeyBGc1NrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2tlbGV0b24nO1xuXG5pbXBvcnQgeyBGczJmYVZlcmlmaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4uL3ZlcmlmaWNhdGlvbic7XG5pbXBvcnQgeyBGczJmYVZlcmlmaWNhdGlvbk1ldGhvZHNNb2R1bGUgfSBmcm9tICcuLi92ZXJpZmljYXRpb24tbWV0aG9kcyc7XG5cbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZERhdGEgfSBmcm9tICcuL2RhdGEnO1xuaW1wb3J0IHsgVmVyaWZpY2F0aW9uU2V0dXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBWZXJpZmljYXRpb25TZXR1cFJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL3ZlcmlmaWNhdGlvbi1zZXR1cC1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBFbWFpbENvbXBvbmVudCwgVmVyaWZ5Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cyc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcblxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcblxuICAgIEZzRm9ybU1vZHVsZSxcbiAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgIEZzTGFiZWxNb2R1bGUsXG4gICAgRnMyZmFWZXJpZmljYXRpb25NZXRob2RzTW9kdWxlLFxuICAgIEZzMmZhVmVyaWZpY2F0aW9uTW9kdWxlLFxuXG4gICAgVmVyaWZpY2F0aW9uU2V0dXBSb3V0aW5nTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBFbWFpbENvbXBvbmVudCxcbiAgICBWZXJpZnlDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFZlcmlmaWNhdGlvbk1ldGhvZERhdGEsXG4gICAgVmVyaWZpY2F0aW9uU2V0dXBTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc1ZlcmlmaWNhdGlvblNldHVwTW9kdWxlIHsgfVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
3
|
import { FsApi } from '@firestitch/api';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { from } from 'rxjs';
|
|
5
|
+
import { VerificationSetupService } from '../../services';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/forms";
|
|
8
8
|
import * as i2 from "@angular/material/button";
|
|
@@ -15,8 +15,8 @@ export class EmailComponent {
|
|
|
15
15
|
_api = inject(FsApi);
|
|
16
16
|
_router = inject(Router);
|
|
17
17
|
_route = inject(ActivatedRoute);
|
|
18
|
-
_verificationMethodData = inject(VerificationMethodData);
|
|
19
18
|
_cdRef = inject(ChangeDetectorRef);
|
|
19
|
+
_verificationSetupService = inject(VerificationSetupService);
|
|
20
20
|
ngOnInit() {
|
|
21
21
|
this._api.get('account', {}, { key: 'account' })
|
|
22
22
|
.subscribe(({ email }) => {
|
|
@@ -26,19 +26,22 @@ export class EmailComponent {
|
|
|
26
26
|
}
|
|
27
27
|
next = () => {
|
|
28
28
|
const redirect = this._route.snapshot.queryParams.redirect || '/';
|
|
29
|
-
return this.
|
|
30
|
-
.
|
|
31
|
-
|
|
29
|
+
return from(this._router
|
|
30
|
+
.navigate(['verify'], {
|
|
31
|
+
relativeTo: this._route,
|
|
32
|
+
queryParams: { redirect },
|
|
32
33
|
}));
|
|
33
34
|
};
|
|
34
35
|
cancel() {
|
|
35
|
-
this.
|
|
36
|
+
this._verificationSetupService
|
|
37
|
+
.signout()
|
|
38
|
+
.subscribe();
|
|
36
39
|
}
|
|
37
40
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailComponent, selector: "ng-component", ngImport: i0, template: "<
|
|
41
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailComponent, selector: "ng-component", ngImport: i0, template: "<form\r\n fsForm\r\n [submit]=\"next\"\r\n [dirtySubmitButton]=\"false\"\r\n *fsSkeleton=\"email\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n Enable 2-Step Verification\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <p>\r\n Please enable two factor authentication to protect your account.\r\n The app will use this email for verifying your account\r\n </p>\r\n <fs-label-field>\r\n <fs-label>\r\n Email\r\n </fs-label>\r\n {{ email }}\r\n </fs-label-field>\r\n <div class=\"buttons\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\">\r\n Next\r\n </button>\r\n <button\r\n mat-button\r\n (click)=\"cancel()\"\r\n type=\"button\">\r\n Cancel\r\n </button>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i4.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "directive", type: i5.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "component", type: i6.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i6.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
39
42
|
}
|
|
40
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, decorators: [{
|
|
41
44
|
type: Component,
|
|
42
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
45
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n fsForm\r\n [submit]=\"next\"\r\n [dirtySubmitButton]=\"false\"\r\n *fsSkeleton=\"email\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n Enable 2-Step Verification\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <p>\r\n Please enable two factor authentication to protect your account.\r\n The app will use this email for verifying your account\r\n </p>\r\n <fs-label-field>\r\n <fs-label>\r\n Email\r\n </fs-label>\r\n {{ email }}\r\n </fs-label-field>\r\n <div class=\"buttons\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\">\r\n Next\r\n </button>\r\n <button\r\n mat-button\r\n (click)=\"cancel()\"\r\n type=\"button\">\r\n Cancel\r\n </button>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"] }]
|
|
43
46
|
}] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3ZlcmlmaWNhdGlvbi1zZXR1cC92aWV3cy9lbWFpbC9lbWFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uLXNldHVwL3ZpZXdzL2VtYWlsL2VtYWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUM5RCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVExRCxNQUFNLE9BQU8sY0FBYztJQUVsQixLQUFLLEdBQUcsSUFBSSxDQUFDO0lBRVosSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25DLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBRTlELFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQzdDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLElBQUksR0FBRyxHQUFHLEVBQUU7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUM7UUFFbEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87YUFDckIsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3ZCLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRTtTQUMxQixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQztJQUVLLE1BQU07UUFDWCxJQUFJLENBQUMseUJBQXlCO2FBQzNCLE9BQU8sRUFBRTthQUNULFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7dUdBaENVLGNBQWM7MkZBQWQsY0FBYyxvRENqQjNCLDQvQkFzQ087OzJGRHJCTSxjQUFjO2tCQUwxQixTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEZzQXBpIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcblxuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWZXJpZmljYXRpb25TZXR1cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGVtYWlsID0gbnVsbDtcblxuICBwcml2YXRlIF9hcGkgPSBpbmplY3QoRnNBcGkpO1xuICBwcml2YXRlIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX3ZlcmlmaWNhdGlvblNldHVwU2VydmljZSA9IGluamVjdChWZXJpZmljYXRpb25TZXR1cFNlcnZpY2UpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hcGkuZ2V0KCdhY2NvdW50Jywge30sIHsga2V5OiAnYWNjb3VudCcgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgZW1haWwgfSkgPT4ge1xuICAgICAgICB0aGlzLmVtYWlsID0gZW1haWw7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmV4dCA9ICgpID0+IHtcbiAgICBjb25zdCByZWRpcmVjdCA9IHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnJlZGlyZWN0IHx8ICcvJztcblxuICAgIHJldHVybiBmcm9tKHRoaXMuX3JvdXRlclxuICAgICAgLm5hdmlnYXRlKFsndmVyaWZ5J10sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5fcm91dGUsIFxuICAgICAgICBxdWVyeVBhcmFtczogeyByZWRpcmVjdCB9LCBcbiAgICAgIH0pKTtcbiAgfTtcblxuICBwdWJsaWMgY2FuY2VsKCkge1xuICAgIHRoaXMuX3ZlcmlmaWNhdGlvblNldHVwU2VydmljZVxuICAgICAgLnNpZ25vdXQoKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsIjxmb3JtXHJcbiAgICBmc0Zvcm1cclxuICAgIFtzdWJtaXRdPVwibmV4dFwiXHJcbiAgICBbZGlydHlTdWJtaXRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgKmZzU2tlbGV0b249XCJlbWFpbFwiPlxyXG4gIDxtYXQtY2FyZD5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICBFbmFibGUgMi1TdGVwIFZlcmlmaWNhdGlvblxyXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPHA+XHJcbiAgICAgICAgUGxlYXNlIGVuYWJsZSB0d28gZmFjdG9yIGF1dGhlbnRpY2F0aW9uIHRvIHByb3RlY3QgeW91ciBhY2NvdW50LlxyXG4gICAgICAgIFRoZSBhcHAgd2lsbCB1c2UgdGhpcyBlbWFpbCBmb3IgdmVyaWZ5aW5nIHlvdXIgYWNjb3VudFxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cclxuICAgICAgICA8ZnMtbGFiZWw+XHJcbiAgICAgICAgICBFbWFpbFxyXG4gICAgICAgIDwvZnMtbGFiZWw+XHJcbiAgICAgICAge3sgZW1haWwgfX1cclxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgIE5leHRcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvZm9ybT4iXX0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject, ViewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, ViewChild, } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
3
|
import { FsCookie } from '@firestitch/cookie';
|
|
4
4
|
import { FsMessage } from '@firestitch/message';
|
|
5
5
|
import { tap } from 'rxjs/operators';
|
|
6
6
|
import { Fs2faVerificationComponent } from '../../../verification/components/2fa-verification';
|
|
7
7
|
import { VerificationMethodData } from '../../data';
|
|
8
|
+
import { VerificationSetupService } from '../../services';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/forms";
|
|
10
11
|
import * as i2 from "@angular/material/button";
|
|
@@ -22,6 +23,15 @@ export class VerifyComponent {
|
|
|
22
23
|
_route = inject(ActivatedRoute);
|
|
23
24
|
_message = inject(FsMessage);
|
|
24
25
|
_verificationMethodData = inject(VerificationMethodData);
|
|
26
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
27
|
+
_verificationSetupService = inject(VerificationSetupService);
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
this._verificationMethodData.account()
|
|
30
|
+
.pipe(tap((verificationMethod) => {
|
|
31
|
+
this.verificationMethod = verificationMethod;
|
|
32
|
+
this._cdRef.markForCheck();
|
|
33
|
+
})).subscribe();
|
|
34
|
+
}
|
|
25
35
|
codeChanged(code) {
|
|
26
36
|
this.code = code;
|
|
27
37
|
}
|
|
@@ -39,16 +49,18 @@ export class VerifyComponent {
|
|
|
39
49
|
return this._verificationMethodData.resend();
|
|
40
50
|
};
|
|
41
51
|
cancel() {
|
|
42
|
-
this.
|
|
52
|
+
this._verificationSetupService
|
|
53
|
+
.signout()
|
|
54
|
+
.subscribe();
|
|
43
55
|
}
|
|
44
56
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerifyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VerifyComponent, selector: "ng-component", viewQueries: [{ propertyName: "verification", first: true, predicate: Fs2faVerificationComponent, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VerifyComponent, selector: "ng-component", viewQueries: [{ propertyName: "verification", first: true, predicate: Fs2faVerificationComponent, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-header>\n <mat-card-title>\n Enable 2-Step Verification\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <fs-2fa-verification\n #verification\n [verificationMethod]=\"verificationMethod\"\n [showTrustedDevice]=\"true\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\">\n </fs-2fa-verification>\n <div class=\"buttons\">\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\">\n Verify\n </button>\n <button\n mat-button\n [fs2faVerificationResend]=\"verification\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n (click)=\"cancel()\"\n type=\"button\">\n Cancel\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i4.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "directive", type: i5.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "component", type: i6.Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: ["verificationMethod", "resend", "showTrustedDevice", "trustDevice", "codeLength", "trustDays", "formatRecipient", "getVerificationMethods", "selectVerificationMethod"], outputs: ["verified", "codeChanged", "codeCompleted", "trustDeviceChange"] }, { kind: "directive", type: i7.Fs2faVerificationResendDirective, selector: "[fs2faVerificationResend]", inputs: ["fs2faVerificationResend"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
46
58
|
}
|
|
47
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerifyComponent, decorators: [{
|
|
48
60
|
type: Component,
|
|
49
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-
|
|
61
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-header>\n <mat-card-title>\n Enable 2-Step Verification\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <fs-2fa-verification\n #verification\n [verificationMethod]=\"verificationMethod\"\n [showTrustedDevice]=\"true\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\">\n </fs-2fa-verification>\n <div class=\"buttons\">\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\">\n Verify\n </button>\n <button\n mat-button\n [fs2faVerificationResend]=\"verification\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n (click)=\"cancel()\"\n type=\"button\">\n Cancel\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"] }]
|
|
50
62
|
}], propDecorators: { verification: [{
|
|
51
63
|
type: ViewChild,
|
|
52
64
|
args: [Fs2faVerificationComponent]
|
|
53
65
|
}] } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24tc2V0dXAvdmlld3MvdmVyaWZ5L3ZlcmlmeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uLXNldHVwL3ZpZXdzL3ZlcmlmeS92ZXJpZnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8sZUFBZTtJQUduQixZQUFZLENBQTZCO0lBRXpDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDWixrQkFBa0IsQ0FBd0I7SUFFekMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3Qix1QkFBdUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN6RCxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkMseUJBQXlCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFOUQsUUFBUTtRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUU7YUFDbkMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1lBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQUk7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sR0FBRyxHQUFvQixFQUFFO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QjthQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQzthQUNoRCxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUssTUFBTSxHQUFHLEdBQXFCLEVBQUU7UUFDckMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0lBRUssTUFBTTtRQUNYLElBQUksQ0FBQyx5QkFBeUI7YUFDM0IsT0FBTyxFQUFFO2FBQ1QsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzt1R0FuRFUsZUFBZTsyRkFBZixlQUFlLGtHQUVmLDBCQUEwQixnREM5QnZDLDZqQ0F5Q087OzJGRGJNLGVBQWU7a0JBTDNCLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTTs4QkFLeEMsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuXG5pbXBvcnQgeyBGc0Nvb2tpZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Nvb2tpZSc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJRnNWZXJpZmljYXRpb25NZXRob2QgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZzMmZhVmVyaWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdmVyaWZpY2F0aW9uL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbic7XG5pbXBvcnQgeyBWZXJpZmljYXRpb25NZXRob2REYXRhIH0gZnJvbSAnLi4vLi4vZGF0YSc7XG5pbXBvcnQgeyBWZXJpZmljYXRpb25TZXR1cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJpZnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJpZnkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFZlcmlmeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZChGczJmYVZlcmlmaWNhdGlvbkNvbXBvbmVudClcbiAgcHVibGljIHZlcmlmaWNhdGlvbjogRnMyZmFWZXJpZmljYXRpb25Db21wb25lbnQ7XG5cbiAgcHVibGljIGNvZGUgPSBudWxsO1xuICBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kOiBJRnNWZXJpZmljYXRpb25NZXRob2Q7XG5cbiAgcHJpdmF0ZSBfY29va2llID0gaW5qZWN0KEZzQ29va2llKTtcbiAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgX3JvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIF92ZXJpZmljYXRpb25NZXRob2REYXRhID0gaW5qZWN0KFZlcmlmaWNhdGlvbk1ldGhvZERhdGEpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX3ZlcmlmaWNhdGlvblNldHVwU2VydmljZSA9IGluamVjdChWZXJpZmljYXRpb25TZXR1cFNlcnZpY2UpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl92ZXJpZmljYXRpb25NZXRob2REYXRhLmFjY291bnQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25NZXRob2QgPSB2ZXJpZmljYXRpb25NZXRob2Q7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb2RlQ2hhbmdlZChjb2RlKTogdm9pZCB7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxuXG4gIHB1YmxpYyB2ZXJpZnkgPSAoKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5fdmVyaWZpY2F0aW9uTWV0aG9kRGF0YVxuICAgICAgLnZlcmlmeSh0aGlzLmNvZGUsIHRoaXMudmVyaWZpY2F0aW9uLnRydXN0RGV2aWNlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVkaXJlY3QgPSB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5yZWRpcmVjdCB8fCAnLyc7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdUd28gZmFjdG9yIHZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbHkgc2V0dXAnKTtcbiAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChyZWRpcmVjdCk7XG4gICAgICAgICAgdGhpcy5fY29va2llLmRlbGV0ZSgnVG9rZW4tRm9yY2UyZmEnKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG4gIHB1YmxpYyByZXNlbmQgPSAoKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcmlmaWNhdGlvbk1ldGhvZERhdGEucmVzZW5kKCk7XG4gIH07XG5cbiAgcHVibGljIGNhbmNlbCgpIHtcbiAgICB0aGlzLl92ZXJpZmljYXRpb25TZXR1cFNlcnZpY2VcbiAgICAgIC5zaWdub3V0KClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCI8Zm9ybVxuICAgIGZzRm9ybVxuICAgIFtzdWJtaXRdPVwidmVyaWZ5XCJcbiAgICBbZGlydHlTdWJtaXRCdXR0b25dPVwiZmFsc2VcIlxuICAgICpmc1NrZWxldG9uPVwidmVyaWZpY2F0aW9uTWV0aG9kXCI+XG4gIDxtYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgICBFbmFibGUgMi1TdGVwIFZlcmlmaWNhdGlvblxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uXG4gICAgICAgICN2ZXJpZmljYXRpb25cbiAgICAgICAgW3ZlcmlmaWNhdGlvbk1ldGhvZF09XCJ2ZXJpZmljYXRpb25NZXRob2RcIlxuICAgICAgICBbc2hvd1RydXN0ZWREZXZpY2VdPVwidHJ1ZVwiXG4gICAgICAgIChjb2RlQ2hhbmdlZCk9XCJjb2RlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3Jlc2VuZF09XCJyZXNlbmRcIj5cbiAgICAgIDwvZnMtMmZhLXZlcmlmaWNhdGlvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgIFZlcmlmeVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgW2ZzMmZhVmVyaWZpY2F0aW9uUmVzZW5kXT1cInZlcmlmaWNhdGlvblwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgUmVzZW5kXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgIENhbmNlbFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbjwvZm9ybT4iXX0=
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { EventEmitter, Component, ChangeDetectionStrategy, ViewChild, Input, Output, Inject, Injectable, NgModule, inject, Directive, HostListener, ChangeDetectorRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/material/dialog';
|
|
4
4
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
5
|
-
import { of, Subject, BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { of, Subject, BehaviorSubject, from } from 'rxjs';
|
|
6
6
|
import { switchMap, tap, finalize, filter, takeUntil, map } from 'rxjs/operators';
|
|
7
7
|
import * as i10 from '@firestitch/form';
|
|
8
8
|
import { FsFormDirective, FsFormModule } from '@firestitch/form';
|
|
@@ -1473,7 +1473,7 @@ class VerificationMethodData {
|
|
|
1473
1473
|
}
|
|
1474
1474
|
account(config = {}) {
|
|
1475
1475
|
return this._api.post('verifications/methods/account', {}, {
|
|
1476
|
-
key: '',
|
|
1476
|
+
key: 'verificationMethod',
|
|
1477
1477
|
...config,
|
|
1478
1478
|
});
|
|
1479
1479
|
}
|
|
@@ -1484,13 +1484,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
1484
1484
|
type: Injectable
|
|
1485
1485
|
}], ctorParameters: () => [{ type: i1$3.FsApi }] });
|
|
1486
1486
|
|
|
1487
|
+
class VerificationSetupService {
|
|
1488
|
+
_api = inject(FsApi);
|
|
1489
|
+
_router = inject(Router);
|
|
1490
|
+
signout() {
|
|
1491
|
+
return this._api
|
|
1492
|
+
.post('auth/signout')
|
|
1493
|
+
.pipe(finalize(() => {
|
|
1494
|
+
this._router.navigateByUrl('/signin');
|
|
1495
|
+
}));
|
|
1496
|
+
}
|
|
1497
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationSetupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1498
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationSetupService });
|
|
1499
|
+
}
|
|
1500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerificationSetupService, decorators: [{
|
|
1501
|
+
type: Injectable
|
|
1502
|
+
}] });
|
|
1503
|
+
|
|
1487
1504
|
class EmailComponent {
|
|
1488
1505
|
email = null;
|
|
1489
1506
|
_api = inject(FsApi);
|
|
1490
1507
|
_router = inject(Router);
|
|
1491
1508
|
_route = inject(ActivatedRoute);
|
|
1492
|
-
_verificationMethodData = inject(VerificationMethodData);
|
|
1493
1509
|
_cdRef = inject(ChangeDetectorRef);
|
|
1510
|
+
_verificationSetupService = inject(VerificationSetupService);
|
|
1494
1511
|
ngOnInit() {
|
|
1495
1512
|
this._api.get('account', {}, { key: 'account' })
|
|
1496
1513
|
.subscribe(({ email }) => {
|
|
@@ -1500,20 +1517,23 @@ class EmailComponent {
|
|
|
1500
1517
|
}
|
|
1501
1518
|
next = () => {
|
|
1502
1519
|
const redirect = this._route.snapshot.queryParams.redirect || '/';
|
|
1503
|
-
return this.
|
|
1504
|
-
.
|
|
1505
|
-
|
|
1520
|
+
return from(this._router
|
|
1521
|
+
.navigate(['verify'], {
|
|
1522
|
+
relativeTo: this._route,
|
|
1523
|
+
queryParams: { redirect },
|
|
1506
1524
|
}));
|
|
1507
1525
|
};
|
|
1508
1526
|
cancel() {
|
|
1509
|
-
this.
|
|
1527
|
+
this._verificationSetupService
|
|
1528
|
+
.signout()
|
|
1529
|
+
.subscribe();
|
|
1510
1530
|
}
|
|
1511
1531
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1512
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailComponent, selector: "ng-component", ngImport: i0, template: "<
|
|
1532
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailComponent, selector: "ng-component", ngImport: i0, template: "<form\r\n fsForm\r\n [submit]=\"next\"\r\n [dirtySubmitButton]=\"false\"\r\n *fsSkeleton=\"email\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n Enable 2-Step Verification\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <p>\r\n Please enable two factor authentication to protect your account.\r\n The app will use this email for verifying your account\r\n </p>\r\n <fs-label-field>\r\n <fs-label>\r\n Email\r\n </fs-label>\r\n {{ email }}\r\n </fs-label-field>\r\n <div class=\"buttons\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\">\r\n Next\r\n </button>\r\n <button\r\n mat-button\r\n (click)=\"cancel()\"\r\n type=\"button\">\r\n Cancel\r\n </button>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"], dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i10.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i10.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "directive", type: i5$1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "component", type: i4$2.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i4$2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1513
1533
|
}
|
|
1514
1534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, decorators: [{
|
|
1515
1535
|
type: Component,
|
|
1516
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
1536
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n fsForm\r\n [submit]=\"next\"\r\n [dirtySubmitButton]=\"false\"\r\n *fsSkeleton=\"email\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n Enable 2-Step Verification\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <p>\r\n Please enable two factor authentication to protect your account.\r\n The app will use this email for verifying your account\r\n </p>\r\n <fs-label-field>\r\n <fs-label>\r\n Email\r\n </fs-label>\r\n {{ email }}\r\n </fs-label-field>\r\n <div class=\"buttons\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\">\r\n Next\r\n </button>\r\n <button\r\n mat-button\r\n (click)=\"cancel()\"\r\n type=\"button\">\r\n Cancel\r\n </button>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"] }]
|
|
1517
1537
|
}] });
|
|
1518
1538
|
|
|
1519
1539
|
class VerifyComponent {
|
|
@@ -1525,6 +1545,15 @@ class VerifyComponent {
|
|
|
1525
1545
|
_route = inject(ActivatedRoute);
|
|
1526
1546
|
_message = inject(FsMessage);
|
|
1527
1547
|
_verificationMethodData = inject(VerificationMethodData);
|
|
1548
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
1549
|
+
_verificationSetupService = inject(VerificationSetupService);
|
|
1550
|
+
ngOnInit() {
|
|
1551
|
+
this._verificationMethodData.account()
|
|
1552
|
+
.pipe(tap((verificationMethod) => {
|
|
1553
|
+
this.verificationMethod = verificationMethod;
|
|
1554
|
+
this._cdRef.markForCheck();
|
|
1555
|
+
})).subscribe();
|
|
1556
|
+
}
|
|
1528
1557
|
codeChanged(code) {
|
|
1529
1558
|
this.code = code;
|
|
1530
1559
|
}
|
|
@@ -1542,14 +1571,16 @@ class VerifyComponent {
|
|
|
1542
1571
|
return this._verificationMethodData.resend();
|
|
1543
1572
|
};
|
|
1544
1573
|
cancel() {
|
|
1545
|
-
this.
|
|
1574
|
+
this._verificationSetupService
|
|
1575
|
+
.signout()
|
|
1576
|
+
.subscribe();
|
|
1546
1577
|
}
|
|
1547
1578
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerifyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1548
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VerifyComponent, selector: "ng-component", viewQueries: [{ propertyName: "verification", first: true, predicate: Fs2faVerificationComponent, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-
|
|
1579
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VerifyComponent, selector: "ng-component", viewQueries: [{ propertyName: "verification", first: true, predicate: Fs2faVerificationComponent, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-header>\n <mat-card-title>\n Enable 2-Step Verification\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <fs-2fa-verification\n #verification\n [verificationMethod]=\"verificationMethod\"\n [showTrustedDevice]=\"true\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\">\n </fs-2fa-verification>\n <div class=\"buttons\">\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\">\n Verify\n </button>\n <button\n mat-button\n [fs2faVerificationResend]=\"verification\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n (click)=\"cancel()\"\n type=\"button\">\n Cancel\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"], dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i10.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i10.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "directive", type: i5$1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "component", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: ["verificationMethod", "resend", "showTrustedDevice", "trustDevice", "codeLength", "trustDays", "formatRecipient", "getVerificationMethods", "selectVerificationMethod"], outputs: ["verified", "codeChanged", "codeCompleted", "trustDeviceChange"] }, { kind: "directive", type: Fs2faVerificationResendDirective, selector: "[fs2faVerificationResend]", inputs: ["fs2faVerificationResend"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1549
1580
|
}
|
|
1550
1581
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VerifyComponent, decorators: [{
|
|
1551
1582
|
type: Component,
|
|
1552
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-
|
|
1583
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"verify\"\n [dirtySubmitButton]=\"false\"\n *fsSkeleton=\"verificationMethod\">\n <mat-card>\n <mat-card-header>\n <mat-card-title>\n Enable 2-Step Verification\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <fs-2fa-verification\n #verification\n [verificationMethod]=\"verificationMethod\"\n [showTrustedDevice]=\"true\"\n (codeChanged)=\"codeChanged($event)\"\n [resend]=\"resend\">\n </fs-2fa-verification>\n <div class=\"buttons\">\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\">\n Verify\n </button>\n <button\n mat-button\n [fs2faVerificationResend]=\"verification\"\n type=\"button\">\n Resend\n </button>\n <button\n mat-button\n (click)=\"cancel()\"\n type=\"button\">\n Cancel\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n</form>", styles: ["h2{text-align:center}.buttons button+button{margin-top:5px}.buttons button{width:100%;display:block}\n"] }]
|
|
1553
1584
|
}], propDecorators: { verification: [{
|
|
1554
1585
|
type: ViewChild,
|
|
1555
1586
|
args: [Fs2faVerificationComponent]
|
|
@@ -1593,6 +1624,7 @@ class FsVerificationSetupModule {
|
|
|
1593
1624
|
VerificationSetupRoutingModule] });
|
|
1594
1625
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsVerificationSetupModule, providers: [
|
|
1595
1626
|
VerificationMethodData,
|
|
1627
|
+
VerificationSetupService,
|
|
1596
1628
|
], imports: [CommonModule,
|
|
1597
1629
|
FormsModule,
|
|
1598
1630
|
MatButtonModule,
|
|
@@ -1629,6 +1661,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
1629
1661
|
],
|
|
1630
1662
|
providers: [
|
|
1631
1663
|
VerificationMethodData,
|
|
1664
|
+
VerificationSetupService,
|
|
1632
1665
|
],
|
|
1633
1666
|
}]
|
|
1634
1667
|
}] });
|