@firestitch/2fa 18.0.9 → 18.0.10
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
|
+
}));
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24tc2V0dXAvdmlld3MvdmVyaWZ5L3ZlcmlmeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uLXNldHVwL3ZpZXdzL3ZlcmlmeS92ZXJpZnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8sZUFBZTtJQUduQixZQUFZLENBQTZCO0lBRXpDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDWixrQkFBa0IsQ0FBd0I7SUFFekMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3Qix1QkFBdUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN6RCxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkMseUJBQXlCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFOUQsUUFBUTtRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUU7YUFDbkMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1lBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBSTtRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxHQUFHLEdBQW9CLEVBQUU7UUFDcEMsT0FBTyxJQUFJLENBQUMsdUJBQXVCO2FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO2FBQ2hELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUM7WUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDLENBQUM7SUFFSyxNQUFNLEdBQUcsR0FBcUIsRUFBRTtRQUNyQyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMvQyxDQUFDLENBQUM7SUFFSyxNQUFNO1FBQ1gsSUFBSSxDQUFDLHlCQUF5QjthQUMzQixPQUFPLEVBQUU7YUFDVCxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3VHQW5EVSxlQUFlOzJGQUFmLGVBQWUsa0dBRWYsMEJBQTBCLGdEQzlCdkMsNmpDQXlDTzs7MkZEYk0sZUFBZTtrQkFMM0IsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUt4QyxZQUFZO3NCQURsQixTQUFTO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBpbmplY3QsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cbmltcG9ydCB7IEZzQ29va2llIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29va2llJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnMyZmFWZXJpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uJztcbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZERhdGEgfSBmcm9tICcuLi8uLi9kYXRhJztcbmltcG9ydCB7IFZlcmlmaWNhdGlvblNldHVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcmlmeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcmlmeS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVmVyaWZ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKEZzMmZhVmVyaWZpY2F0aW9uQ29tcG9uZW50KVxuICBwdWJsaWMgdmVyaWZpY2F0aW9uOiBGczJmYVZlcmlmaWNhdGlvbkNvbXBvbmVudDtcblxuICBwdWJsaWMgY29kZSA9IG51bGw7XG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcblxuICBwcml2YXRlIF9jb29raWUgPSBpbmplY3QoRnNDb29raWUpO1xuICBwcml2YXRlIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIHByaXZhdGUgX3ZlcmlmaWNhdGlvbk1ldGhvZERhdGEgPSBpbmplY3QoVmVyaWZpY2F0aW9uTWV0aG9kRGF0YSk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfdmVyaWZpY2F0aW9uU2V0dXBTZXJ2aWNlID0gaW5qZWN0KFZlcmlmaWNhdGlvblNldHVwU2VydmljZSk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZlcmlmaWNhdGlvbk1ldGhvZERhdGEuYWNjb3VudCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZCA9IHZlcmlmaWNhdGlvbk1ldGhvZDtcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGNvZGVDaGFuZ2VkKGNvZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgcHVibGljIHZlcmlmeSA9ICgpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xuICAgIHJldHVybiB0aGlzLl92ZXJpZmljYXRpb25NZXRob2REYXRhXG4gICAgICAudmVyaWZ5KHRoaXMuY29kZSwgdGhpcy52ZXJpZmljYXRpb24udHJ1c3REZXZpY2UpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCByZWRpcmVjdCA9IHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnJlZGlyZWN0IHx8ICcvJztcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1R3byBmYWN0b3IgdmVyaWZpY2F0aW9uIHN1Y2Nlc3NmdWxseSBzZXR1cCcpO1xuICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJlZGlyZWN0KTtcbiAgICAgICAgICB0aGlzLl9jb29raWUuZGVsZXRlKCdUb2tlbi1Gb3JjZTJmYScpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHVibGljIHJlc2VuZCA9ICgpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5fdmVyaWZpY2F0aW9uTWV0aG9kRGF0YS5yZXNlbmQoKTtcbiAgfTtcblxuICBwdWJsaWMgY2FuY2VsKCkge1xuICAgIHRoaXMuX3ZlcmlmaWNhdGlvblNldHVwU2VydmljZVxuICAgICAgLnNpZ25vdXQoKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsIjxmb3JtXG4gICAgZnNGb3JtXG4gICAgW3N1Ym1pdF09XCJ2ZXJpZnlcIlxuICAgIFtkaXJ0eVN1Ym1pdEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgKmZzU2tlbGV0b249XCJ2ZXJpZmljYXRpb25NZXRob2RcIj5cbiAgPG1hdC1jYXJkPlxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIEVuYWJsZSAyLVN0ZXAgVmVyaWZpY2F0aW9uXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgPGZzLTJmYS12ZXJpZmljYXRpb25cbiAgICAgICAgI3ZlcmlmaWNhdGlvblxuICAgICAgICBbdmVyaWZpY2F0aW9uTWV0aG9kXT1cInZlcmlmaWNhdGlvbk1ldGhvZFwiXG4gICAgICAgIFtzaG93VHJ1c3RlZERldmljZV09XCJ0cnVlXCJcbiAgICAgICAgKGNvZGVDaGFuZ2VkKT1cImNvZGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbcmVzZW5kXT1cInJlc2VuZFwiPlxuICAgICAgPC9mcy0yZmEtdmVyaWZpY2F0aW9uPlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgVmVyaWZ5XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBbZnMyZmFWZXJpZmljYXRpb25SZXNlbmRdPVwidmVyaWZpY2F0aW9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICBSZXNlbmRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuPC9mb3JtPiJdfQ==
|
|
@@ -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
|
+
}));
|
|
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
|
}] });
|