@rolatech/angular-auth 17.2.16
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/README.md +7 -0
- package/esm2022/index.mjs +10 -0
- package/esm2022/lib/angular-auth.module.mjs +24 -0
- package/esm2022/lib/auth-routing.module.mjs +40 -0
- package/esm2022/lib/auth.routes.mjs +13 -0
- package/esm2022/lib/auth.store.mjs +51 -0
- package/esm2022/lib/components/auth-dialog/auth-dialog.component.mjs +14 -0
- package/esm2022/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.mjs +88 -0
- package/esm2022/lib/components/forbidden/forbidden.component.mjs +11 -0
- package/esm2022/lib/components/index.mjs +2 -0
- package/esm2022/lib/components/unauthorized/unauthorized.component.mjs +11 -0
- package/esm2022/lib/guards/auth-dialog.guard.mjs +37 -0
- package/esm2022/lib/guards/auth.guard.mjs +40 -0
- package/esm2022/lib/guards/index.mjs +5 -0
- package/esm2022/lib/guards/permission.guard.mjs +16 -0
- package/esm2022/lib/guards/role.guard.mjs +32 -0
- package/esm2022/lib/interceptors/auth.interceptor.mjs +66 -0
- package/esm2022/lib/interceptors/cookie.interceptor.mjs +31 -0
- package/esm2022/lib/interceptors/error.interceptor.mjs +63 -0
- package/esm2022/lib/interceptors/index.mjs +3 -0
- package/esm2022/lib/interfaces/auth.interface.mjs +7 -0
- package/esm2022/lib/pages/forgot-password/forgot-password.component.mjs +13 -0
- package/esm2022/lib/pages/passwordreset/passwordreset.component.mjs +13 -0
- package/esm2022/lib/pages/signin/signin.component.mjs +67 -0
- package/esm2022/lib/pages/signup/signup.component.mjs +13 -0
- package/esm2022/lib/services/auth.service.mjs +139 -0
- package/esm2022/lib/services/auth.user.service.mjs +135 -0
- package/esm2022/lib/services/index.mjs +4 -0
- package/esm2022/lib/services/storage.service.mjs +50 -0
- package/esm2022/provider.mjs +25 -0
- package/esm2022/rolatech-angular-auth.mjs +5 -0
- package/fesm2022/rolatech-angular-auth.mjs +735 -0
- package/fesm2022/rolatech-angular-auth.mjs.map +1 -0
- package/index.d.ts +9 -0
- package/lib/angular-auth.module.d.ts +10 -0
- package/lib/auth-routing.module.d.ts +7 -0
- package/lib/auth.routes.d.ts +2 -0
- package/lib/auth.store.d.ts +16 -0
- package/lib/components/auth-dialog/auth-dialog.component.d.ts +7 -0
- package/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.d.ts +23 -0
- package/lib/components/forbidden/forbidden.component.d.ts +5 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/unauthorized/unauthorized.component.d.ts +5 -0
- package/lib/guards/auth-dialog.guard.d.ts +2 -0
- package/lib/guards/auth.guard.d.ts +2 -0
- package/lib/guards/index.d.ts +4 -0
- package/lib/guards/permission.guard.d.ts +2 -0
- package/lib/guards/role.guard.d.ts +2 -0
- package/lib/interceptors/auth.interceptor.d.ts +15 -0
- package/lib/interceptors/cookie.interceptor.d.ts +9 -0
- package/lib/interceptors/error.interceptor.d.ts +23 -0
- package/lib/interceptors/index.d.ts +2 -0
- package/lib/interfaces/auth.interface.d.ts +29 -0
- package/lib/pages/forgot-password/forgot-password.component.d.ts +8 -0
- package/lib/pages/passwordreset/passwordreset.component.d.ts +8 -0
- package/lib/pages/signin/signin.component.d.ts +25 -0
- package/lib/pages/signup/signup.component.d.ts +8 -0
- package/lib/services/auth.service.d.ts +33 -0
- package/lib/services/auth.user.service.d.ts +36 -0
- package/lib/services/index.d.ts +3 -0
- package/lib/services/storage.service.d.ts +15 -0
- package/package.json +31 -0
- package/provider.d.ts +2 -0
- package/themes/_default.scss +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ForbiddenComponent } from './lib/components/forbidden/forbidden.component';
|
|
2
|
+
export { UnauthorizedComponent } from './lib/components/unauthorized/unauthorized.component';
|
|
3
|
+
export * from './lib/components';
|
|
4
|
+
export * from './lib/guards';
|
|
5
|
+
export * from './lib/services';
|
|
6
|
+
export * from './lib/interceptors';
|
|
7
|
+
export * from './provider';
|
|
8
|
+
export * from './lib/auth.routes';
|
|
9
|
+
export * from './lib/auth.store';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYXV0aC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFN0YsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRm9yYmlkZGVuQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3JiaWRkZW4vZm9yYmlkZGVuLmNvbXBvbmVudCc7XG5leHBvcnQgeyBVbmF1dGhvcml6ZWRDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VuYXV0aG9yaXplZC91bmF1dGhvcml6ZWQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5yb3V0ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zdG9yZSc7XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
2
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
3
|
+
import { AuthService } from './services/auth.service';
|
|
4
|
+
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AngularAuthModule {
|
|
7
|
+
static forRoot() {
|
|
8
|
+
return {
|
|
9
|
+
ngModule: AngularAuthModule,
|
|
10
|
+
providers: [AuthService],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AngularAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AngularAuthModule, imports: [AngularCommonModule, HttpClientModule] });
|
|
15
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AngularAuthModule, imports: [AngularCommonModule, HttpClientModule] });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AngularAuthModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [AngularCommonModule, HttpClientModule],
|
|
21
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hdXRoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvYW5ndWxhci1hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSy9ELE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsTUFBTSxDQUFDLE9BQU87UUFDbkIsT0FBTztZQUNMLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO1NBQ3pCLENBQUM7SUFDSixDQUFDO3VHQU5VLGlCQUFpQjt3R0FBakIsaUJBQWlCLFlBSGxCLG1CQUFtQixFQUFFLGdCQUFnQjt3R0FHcEMsaUJBQWlCLFlBSGxCLG1CQUFtQixFQUFFLGdCQUFnQjs7MkZBR3BDLGlCQUFpQjtrQkFKN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0FuZ3VsYXJDb21tb25Nb2R1bGUsIEh0dHBDbGllbnRNb2R1bGVdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJBdXRoTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckF1dGhNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbQXV0aFNlcnZpY2VdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { ForgotPasswordComponent } from './pages/forgot-password/forgot-password.component';
|
|
4
|
+
import { PasswordresetComponent } from './pages/passwordreset/passwordreset.component';
|
|
5
|
+
import { SigninComponent } from './pages/signin/signin.component';
|
|
6
|
+
import { SignupComponent } from './pages/signup/signup.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/router";
|
|
9
|
+
const routes = [
|
|
10
|
+
{
|
|
11
|
+
path: 'signin',
|
|
12
|
+
component: SigninComponent,
|
|
13
|
+
data: { title: 'Signin' },
|
|
14
|
+
},
|
|
15
|
+
{ path: 'signup', component: SignupComponent, data: { title: 'Signup' } },
|
|
16
|
+
{
|
|
17
|
+
path: 'passwordreset/:token',
|
|
18
|
+
component: PasswordresetComponent,
|
|
19
|
+
data: { title: 'Password Reset' },
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
path: 'forgot',
|
|
23
|
+
component: ForgotPasswordComponent,
|
|
24
|
+
data: { title: 'Forgot Password' },
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
export class AuthRoutingModule {
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: AuthRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
29
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: AuthRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
30
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: AuthRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: AuthRoutingModule, decorators: [{
|
|
33
|
+
type: NgModule,
|
|
34
|
+
args: [{
|
|
35
|
+
imports: [RouterModule.forChild(routes)],
|
|
36
|
+
exports: [RouterModule],
|
|
37
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvYXV0aC1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFbEUsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLFNBQVMsRUFBRSxlQUFlO1FBQzFCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7S0FDMUI7SUFDRCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7SUFDekU7UUFDRSxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLFNBQVMsRUFBRSxzQkFBc0I7UUFDakMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO0tBQ2xDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLFNBQVMsRUFBRSx1QkFBdUI7UUFDbEMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO0tBQ25DO0NBQ0YsQ0FBQztBQU9GLE1BQU0sT0FBTyxpQkFBaUI7dUdBQWpCLGlCQUFpQjt3R0FBakIsaUJBQWlCLHdDQUhsQixZQUFZO3dHQUdYLGlCQUFpQixZQUpsQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzsyRkFHWCxpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9yZ290UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkcmVzZXRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3Bhc3N3b3JkcmVzZXQvcGFzc3dvcmRyZXNldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lnbmluQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9zaWduaW4vc2lnbmluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWdudXBDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3NpZ251cC9zaWdudXAuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnc2lnbmluJyxcbiAgICBjb21wb25lbnQ6IFNpZ25pbkNvbXBvbmVudCxcbiAgICBkYXRhOiB7IHRpdGxlOiAnU2lnbmluJyB9LFxuICB9LFxuICB7IHBhdGg6ICdzaWdudXAnLCBjb21wb25lbnQ6IFNpZ251cENvbXBvbmVudCwgZGF0YTogeyB0aXRsZTogJ1NpZ251cCcgfSB9LFxuICB7XG4gICAgcGF0aDogJ3Bhc3N3b3JkcmVzZXQvOnRva2VuJyxcbiAgICBjb21wb25lbnQ6IFBhc3N3b3JkcmVzZXRDb21wb25lbnQsXG4gICAgZGF0YTogeyB0aXRsZTogJ1Bhc3N3b3JkIFJlc2V0JyB9LFxuICB9LFxuICB7XG4gICAgcGF0aDogJ2ZvcmdvdCcsXG4gICAgY29tcG9uZW50OiBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCxcbiAgICBkYXRhOiB7IHRpdGxlOiAnRm9yZ290IFBhc3N3b3JkJyB9LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFJvdXRpbmdNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UnauthorizedComponent } from './components/unauthorized/unauthorized.component';
|
|
2
|
+
import { ForbiddenComponent } from './components/forbidden/forbidden.component';
|
|
3
|
+
export const authRoutes = [
|
|
4
|
+
{
|
|
5
|
+
path: 'unauthorized',
|
|
6
|
+
component: UnauthorizedComponent,
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
path: 'forbidden',
|
|
10
|
+
component: ForbiddenComponent,
|
|
11
|
+
},
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYXV0aC9zcmMvbGliL2F1dGgucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBVztJQUNoQztRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLFNBQVMsRUFBRSxxQkFBcUI7S0FDakM7SUFDRDtRQUNFLElBQUksRUFBRSxXQUFXO1FBQ2pCLFNBQVMsRUFBRSxrQkFBa0I7S0FDOUI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVuYXV0aG9yaXplZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91bmF1dGhvcml6ZWQvdW5hdXRob3JpemVkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JiaWRkZW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9yYmlkZGVuL2ZvcmJpZGRlbi5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgYXV0aFJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ3VuYXV0aG9yaXplZCcsXG4gICAgY29tcG9uZW50OiBVbmF1dGhvcml6ZWRDb21wb25lbnQsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZm9yYmlkZGVuJyxcbiAgICBjb21wb25lbnQ6IEZvcmJpZGRlbkNvbXBvbmVudCxcbiAgfSxcbl07XG4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Injectable, computed, signal } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AuthStore {
|
|
4
|
+
_state = signal({
|
|
5
|
+
userId: '',
|
|
6
|
+
user: null,
|
|
7
|
+
roles: [],
|
|
8
|
+
authenticated: false,
|
|
9
|
+
loaded: false,
|
|
10
|
+
});
|
|
11
|
+
userId = computed(() => this._state().userId);
|
|
12
|
+
user = computed(() => this._state().user);
|
|
13
|
+
roles = computed(() => this._state().roles);
|
|
14
|
+
authenticated = computed(() => this._state().authenticated);
|
|
15
|
+
loaded = computed(() => this._state().loaded);
|
|
16
|
+
update(data) {
|
|
17
|
+
this._state.update((state) => {
|
|
18
|
+
state.authenticated = data.authenticated;
|
|
19
|
+
state.userId = data.userId;
|
|
20
|
+
state.roles = data.roles;
|
|
21
|
+
state.loaded = data.loaded;
|
|
22
|
+
state.user = data.user;
|
|
23
|
+
return { ...state };
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
updateAuthenticated(authenticated) {
|
|
27
|
+
this._state.update((state) => {
|
|
28
|
+
state.authenticated = authenticated;
|
|
29
|
+
return { ...state };
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
updateUser(user) {
|
|
33
|
+
this._state.update((state) => {
|
|
34
|
+
state.user = user;
|
|
35
|
+
return { ...state };
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
updateEmail(email) {
|
|
39
|
+
this._state.update((state) => {
|
|
40
|
+
state.user.email = email;
|
|
41
|
+
return { ...state };
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthStore, providedIn: 'root' });
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthStore, decorators: [{
|
|
48
|
+
type: Injectable,
|
|
49
|
+
args: [{ providedIn: 'root' }]
|
|
50
|
+
}] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvYXV0aC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVzdELE1BQU0sT0FBTyxTQUFTO0lBQ1osTUFBTSxHQUFHLE1BQU0sQ0FBWTtRQUNqQyxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEVBQUU7UUFDVCxhQUFhLEVBQUUsS0FBSztRQUNwQixNQUFNLEVBQUUsS0FBSztLQUNkLENBQUMsQ0FBQztJQUNILE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVELE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTlDLE1BQU0sQ0FBQyxJQUFTO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQixLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDekMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0IsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELG1CQUFtQixDQUFDLGFBQXNCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0IsS0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDcEMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQixLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNsQixPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNCLEtBQUssQ0FBQyxJQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUMxQixPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBekNVLFNBQVM7MkdBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvYXV0aC5pbnRlcmZhY2UnO1xuXG50eXBlIEF1dGhTdGF0ZSA9IHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHVzZXI6IFVzZXIgfCBudWxsO1xuICByb2xlczogc3RyaW5nW107XG4gIGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XG4gIGxvYWRlZDogYm9vbGVhbjtcbn07XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yZSB7XG4gIHByaXZhdGUgX3N0YXRlID0gc2lnbmFsPEF1dGhTdGF0ZT4oe1xuICAgIHVzZXJJZDogJycsXG4gICAgdXNlcjogbnVsbCxcbiAgICByb2xlczogW10sXG4gICAgYXV0aGVudGljYXRlZDogZmFsc2UsXG4gICAgbG9hZGVkOiBmYWxzZSxcbiAgfSk7XG4gIHVzZXJJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkudXNlcklkKTtcbiAgdXNlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkudXNlcik7XG4gIHJvbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5yb2xlcyk7XG4gIGF1dGhlbnRpY2F0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zdGF0ZSgpLmF1dGhlbnRpY2F0ZWQpO1xuICBsb2FkZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zdGF0ZSgpLmxvYWRlZCk7XG5cbiAgdXBkYXRlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmF1dGhlbnRpY2F0ZWQgPSBkYXRhLmF1dGhlbnRpY2F0ZWQ7XG4gICAgICBzdGF0ZS51c2VySWQgPSBkYXRhLnVzZXJJZDtcbiAgICAgIHN0YXRlLnJvbGVzID0gZGF0YS5yb2xlcztcbiAgICAgIHN0YXRlLmxvYWRlZCA9IGRhdGEubG9hZGVkO1xuICAgICAgc3RhdGUudXNlciA9IGRhdGEudXNlcjtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XG4gICAgfSk7XG4gIH1cbiAgdXBkYXRlQXV0aGVudGljYXRlZChhdXRoZW50aWNhdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc3RhdGUudXBkYXRlKChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUuYXV0aGVudGljYXRlZCA9IGF1dGhlbnRpY2F0ZWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSB9O1xuICAgIH0pO1xuICB9XG4gIHVwZGF0ZVVzZXIodXNlcjogVXNlcikge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLnVzZXIgPSB1c2VyO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUgfTtcbiAgICB9KTtcbiAgfVxuICB1cGRhdGVFbWFpbChlbWFpbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3RhdGUudXBkYXRlKChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUudXNlciEuZW1haWwgPSBlbWFpbDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatDialogModule, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AuthDialogComponent {
|
|
6
|
+
dialogRef = inject(MatDialogRef);
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: AuthDialogComponent, isStandalone: true, selector: "rolatech-auth-dialog", ngImport: i0, template: "<p>auth-dialog works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }] });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthDialogComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'rolatech-auth-dialog', standalone: true, imports: [CommonModule, MatDialogModule], template: "<p>auth-dialog works!</p>\n" }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL2F1dGgtZGlhbG9nL2F1dGgtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9hdXRoLWRpYWxvZy9hdXRoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFhLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFTcEYsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO3VHQUR0QixtQkFBbUI7MkZBQW5CLG1CQUFtQixnRkNYaEMsNkJBQ0EseURETVksWUFBWSw4QkFBRSxlQUFlOzsyRkFJNUIsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYXV0aC1kaWFsb2cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXREaWFsb2dNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXV0aC1kaWFsb2cuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoRGlhbG9nQ29tcG9uZW50IHtcbiAgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZik7XG59XG4iLCI8cD5hdXRoLWRpYWxvZyB3b3JrcyE8L3A+XG4iXX0=
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
4
|
+
import { SnackBarService } from '@rolatech/angular-services';
|
|
5
|
+
import QRCode from 'qrcode';
|
|
6
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
+
import { AuthService } from '../../services/auth.service';
|
|
8
|
+
import { SpinnerComponent } from '@rolatech/angular-components';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/material/button";
|
|
11
|
+
export class FaceidDetectDialogComponent {
|
|
12
|
+
dialogRef = inject(MatDialogRef);
|
|
13
|
+
environment = inject(APP_CONFIG);
|
|
14
|
+
data = inject(MAT_DIALOG_DATA);
|
|
15
|
+
authService = inject(AuthService);
|
|
16
|
+
snackBarService = inject(SnackBarService);
|
|
17
|
+
loading = false;
|
|
18
|
+
qrcodeUrl = '';
|
|
19
|
+
verified = false;
|
|
20
|
+
interval;
|
|
21
|
+
constructor() {
|
|
22
|
+
this.request();
|
|
23
|
+
}
|
|
24
|
+
request() {
|
|
25
|
+
this.loading = true;
|
|
26
|
+
this.authService.requestFaceIdDetect().subscribe({
|
|
27
|
+
next: ({ data }) => {
|
|
28
|
+
this.genQRCode(data.url);
|
|
29
|
+
this.loop();
|
|
30
|
+
},
|
|
31
|
+
error: () => {
|
|
32
|
+
this.loading = false;
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
cancel() {
|
|
37
|
+
clearInterval(this.interval);
|
|
38
|
+
this.dialogRef.close(this.verified);
|
|
39
|
+
}
|
|
40
|
+
checkFaceIdStatus() {
|
|
41
|
+
this.loading = false;
|
|
42
|
+
this.authService.faceIdStatus().subscribe({
|
|
43
|
+
next: (res) => {
|
|
44
|
+
this.verified = res.data.verified;
|
|
45
|
+
if (res.data.verified) {
|
|
46
|
+
clearInterval(this.interval);
|
|
47
|
+
this.dialogRef.close(true);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.snackBarService.open('未认证');
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
error: (error) => {
|
|
54
|
+
clearInterval(this.interval);
|
|
55
|
+
this.dialogRef.close(false);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
loop() {
|
|
60
|
+
this.loading = false;
|
|
61
|
+
this.interval = setInterval(() => {
|
|
62
|
+
this.authService.faceIdStatus().subscribe({
|
|
63
|
+
next: (res) => {
|
|
64
|
+
if (res.data.verified) {
|
|
65
|
+
clearInterval(this.interval);
|
|
66
|
+
this.dialogRef.close(true);
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
this;
|
|
71
|
+
}, 2000);
|
|
72
|
+
}
|
|
73
|
+
async genQRCode(url) {
|
|
74
|
+
try {
|
|
75
|
+
this.qrcodeUrl = await QRCode.toDataURL(url);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
console.error(err);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FaceidDetectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: FaceidDetectDialogComponent, isStandalone: true, selector: "rolatech-faceid-detect-dialog", ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4F7F\u7528\u5FAE\u4FE1\u626B\u63CF\u4E8C\u7EF4\u7801, \u5B8C\u6210\u4EBA\u8138\u5B9E\u540D\u8BA4\u8BC1</div>\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n\n <img [src]=\"qrcodeUrl\" />\n </div>\n <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-raised-button color=\"primary\" (click)=\"checkFaceIdStatus()\">\u5B8C\u6210\u8BA4\u8BC1</button>\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FaceidDetectDialogComponent, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'rolatech-faceid-detect-dialog', standalone: true, imports: [SpinnerComponent, MatButtonModule], template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4F7F\u7528\u5FAE\u4FE1\u626B\u63CF\u4E8C\u7EF4\u7801, \u5B8C\u6210\u4EBA\u8138\u5B9E\u540D\u8BA4\u8BC1</div>\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n\n <img [src]=\"qrcodeUrl\" />\n </div>\n <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-raised-button color=\"primary\" (click)=\"checkFaceIdStatus()\">\u5B8C\u6210\u8BA4\u8BC1</button>\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] }]
|
|
87
|
+
}], ctorParameters: () => [] });
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZWlkLWRldGVjdC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL2ZhY2VpZC1kZXRlY3QtZGlhbG9nL2ZhY2VpZC1kZXRlY3QtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9mYWNlaWQtZGV0ZWN0LWRpYWxvZy9mYWNlaWQtZGV0ZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF1QyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFTaEUsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLENBQUM7SUFDVDtRQUNFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDL0MsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNO1FBQ0osYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3hDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUk7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNaLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQztRQUNQLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDekIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO3VHQW5FVSwyQkFBMkI7MkZBQTNCLDJCQUEyQix5RkNoQnhDLHdyQkFnQkEsZ2FERlksZ0JBQWdCLCtFQUFFLGVBQWU7OzJGQUVoQywyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsK0JBQStCLGNBRzdCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBSZW5kZXJlcjIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgUVJDb2RlIGZyb20gJ3FyY29kZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1mYWNlaWQtZGV0ZWN0LWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWNlaWQtZGV0ZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZhY2VpZC1kZXRlY3QtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtTcGlubmVyQ29tcG9uZW50LCBNYXRCdXR0b25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGYWNlaWREZXRlY3REaWFsb2dDb21wb25lbnQge1xuICBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmKTtcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIGRhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcbiAgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBzbmFja0JhclNlcnZpY2UgPSBpbmplY3QoU25hY2tCYXJTZXJ2aWNlKTtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBxcmNvZGVVcmwgPSAnJztcbiAgdmVyaWZpZWQgPSBmYWxzZTtcbiAgaW50ZXJ2YWw7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVxdWVzdCgpO1xuICB9XG4gIHJlcXVlc3QoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnJlcXVlc3RGYWNlSWREZXRlY3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIHRoaXMuZ2VuUVJDb2RlKGRhdGEudXJsKTtcbiAgICAgICAgdGhpcy5sb29wKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGNhbmNlbCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMudmVyaWZpZWQpO1xuICB9XG4gIGNoZWNrRmFjZUlkU3RhdHVzKCkge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuZmFjZUlkU3RhdHVzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy52ZXJpZmllZCA9IHJlcy5kYXRhLnZlcmlmaWVkO1xuICAgICAgICBpZiAocmVzLmRhdGEudmVyaWZpZWQpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+acquiupOivgScpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGxvb3AoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZmFjZUlkU3RhdHVzKCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMuZGF0YS52ZXJpZmllZCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcztcbiAgICB9LCAyMDAwKTtcbiAgfVxuICBhc3luYyBnZW5RUkNvZGUodXJsOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5xcmNvZGVVcmwgPSBhd2FpdCBRUkNvZGUudG9EYXRhVVJMKHVybCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBwLTMgbWF4LXctWzUwMHB4XSBteC1hdXRvXCI+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtYm9sZCBwLTNcIj7kvb/nlKjlvq7kv6Hmiavmj4/kuoznu7TnoIEsIOWujOaIkOS6uuiEuOWunuWQjeiupOivgTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidy1bMjU2cHhdIGgtWzI1NnB4XSBteC1hdXRvIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8cm9sYXRlY2gtc3Bpbm5lcj48L3JvbGF0ZWNoLXNwaW5uZXI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8aW1nIFtzcmNdPVwicXJjb2RlVXJsXCIgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwLTMgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCI+5Y+W5raIPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2hlY2tGYWNlSWRTdGF0dXMoKVwiPuWujOaIkOiupOivgTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ForbiddenComponent {
|
|
4
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ForbiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: ForbiddenComponent, isStandalone: true, selector: "rolatech-forbidden", ngImport: i0, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n", styles: [""] });
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ForbiddenComponent, decorators: [{
|
|
8
|
+
type: Component,
|
|
9
|
+
args: [{ selector: 'rolatech-forbidden', standalone: true, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n" }]
|
|
10
|
+
}] });
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yYmlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9mb3JiaWRkZW4vZm9yYmlkZGVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9mb3JiaWRkZW4vZm9yYmlkZGVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFDLE1BQU0sT0FBTyxrQkFBa0I7dUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCLDhFQ1IvQixnSkFNQTs7MkZERWEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLG9CQUFvQixjQUdsQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncm9sYXRlY2gtZm9yYmlkZGVuJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9yYmlkZGVuLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JiaWRkZW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JiaWRkZW5Db21wb25lbnQge31cbiIsIjxkaXYgY2xhc3M9XCJwLTYgbWF4LXctbGcgaC1hdXRvIG1heC1oLTMyXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgPGI+NDAzLjwvYj5cbiAgICA8cD5Gb3JiaWRkZW4gcGFnZS48L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { FaceidDetectDialogComponent } from './faceid-detect-dialog/faceid-detect-dialog.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGYWNlaWREZXRlY3REaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2ZhY2VpZC1kZXRlY3QtZGlhbG9nL2ZhY2VpZC1kZXRlY3QtZGlhbG9nLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class UnauthorizedComponent {
|
|
4
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: UnauthorizedComponent, isStandalone: true, selector: "rolatech-unauthorized", ngImport: i0, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n", styles: [""] });
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: UnauthorizedComponent, decorators: [{
|
|
8
|
+
type: Component,
|
|
9
|
+
args: [{ selector: 'rolatech-unauthorized', standalone: true, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n" }]
|
|
10
|
+
}] });
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdXRob3JpemVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvY29tcG9uZW50cy91bmF1dGhvcml6ZWQvdW5hdXRob3JpemVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvY29tcG9uZW50cy91bmF1dGhvcml6ZWQvdW5hdXRob3JpemVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFDLE1BQU0sT0FBTyxxQkFBcUI7dUdBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCLGlGQ1JsQyxtSkFNQTs7MkZERWEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXVuYXV0aG9yaXplZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91bmF1dGhvcml6ZWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91bmF1dGhvcml6ZWQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVW5hdXRob3JpemVkQ29tcG9uZW50IHt9XG4iLCI8ZGl2IGNsYXNzPVwicC02IG1heC13LWxnIGgtYXV0byBtYXgtaC0zMlwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgIDxiPjQwMS48L2I+XG4gICAgPHA+VW5hdXRob3JpemVkIHBhZ2UuPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { inject, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
4
|
+
import { map, of } from 'rxjs';
|
|
5
|
+
import { AuthService } from '../services/auth.service';
|
|
6
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
7
|
+
import { AuthDialogComponent } from '../components/auth-dialog/auth-dialog.component';
|
|
8
|
+
export const AuthDialogGuard = (route, state) => {
|
|
9
|
+
const authService = inject(AuthService);
|
|
10
|
+
const dialog = inject(MatDialog);
|
|
11
|
+
const environment = inject(APP_CONFIG);
|
|
12
|
+
const platformId = inject(PLATFORM_ID);
|
|
13
|
+
const isContinue = state.url.includes('continue');
|
|
14
|
+
const continueUrl = route.queryParams['continue'];
|
|
15
|
+
if (!isPlatformBrowser(platformId)) {
|
|
16
|
+
return of(false);
|
|
17
|
+
}
|
|
18
|
+
return authService.introspect().pipe(map(({ roles, authenticated }) => {
|
|
19
|
+
if (!authenticated) {
|
|
20
|
+
if (window.location.href.includes(environment.accountsUrl) && !isContinue) {
|
|
21
|
+
window.location.href = environment.myaccountUrl;
|
|
22
|
+
}
|
|
23
|
+
if (isContinue) {
|
|
24
|
+
window.location.href = continueUrl;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const dialogRef = dialog.open(AuthDialogComponent, {
|
|
29
|
+
data: {},
|
|
30
|
+
});
|
|
31
|
+
dialogRef.afterClosed().subscribe((result) => { });
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return authenticated;
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1kaWFsb2cuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYXV0aC9zcmMvbGliL2d1YXJkcy9hdXRoLWRpYWxvZy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFjLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFRLEdBQUcsRUFBYyxFQUFFLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFdEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQXVCLEVBQUU7SUFDbEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRTtRQUMvQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ2pELElBQUksRUFBRSxFQUFFO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVBQX0NPTkZJRywgV0lORE9XIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IGxhc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBBdXRoRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdXRoLWRpYWxvZy9hdXRoLWRpYWxvZy5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQXV0aERpYWxvZ0d1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKHJvdXRlLCBzdGF0ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBjb25zdCBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGNvbnN0IGlzQ29udGludWUgPSBzdGF0ZS51cmwuaW5jbHVkZXMoJ2NvbnRpbnVlJyk7XG4gIGNvbnN0IGNvbnRpbnVlVXJsID0gcm91dGUucXVlcnlQYXJhbXNbJ2NvbnRpbnVlJ107XG4gIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG4gIHJldHVybiBhdXRoU2VydmljZS5pbnRyb3NwZWN0KCkucGlwZShcbiAgICBtYXAoKHsgcm9sZXMsIGF1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgaWYgKCFhdXRoZW50aWNhdGVkKSB7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcyhlbnZpcm9ubWVudC5hY2NvdW50c1VybCkgJiYgIWlzQ29udGludWUpIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGVudmlyb25tZW50Lm15YWNjb3VudFVybDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb250aW51ZSkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gY29udGludWVVcmw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IGRpYWxvZy5vcGVuKEF1dGhEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7fSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0ZWQ7XG4gICAgfSksXG4gICk7XG59O1xuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { inject, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
5
|
+
import { map, of } from 'rxjs';
|
|
6
|
+
import { AuthService } from '../services/auth.service';
|
|
7
|
+
export const AuthGuard = (route, state) => {
|
|
8
|
+
const environment = inject(APP_CONFIG);
|
|
9
|
+
const platformId = inject(PLATFORM_ID);
|
|
10
|
+
const authService = inject(AuthService);
|
|
11
|
+
const router = inject(Router);
|
|
12
|
+
const isContinue = state.url.includes('continue');
|
|
13
|
+
const continueUrl = route.queryParams['continue'];
|
|
14
|
+
if (!isPlatformBrowser(platformId)) {
|
|
15
|
+
return of(false);
|
|
16
|
+
}
|
|
17
|
+
return authService.introspect().pipe(map(({ roles, authenticated }) => {
|
|
18
|
+
const routeRoles = route.data['roles'];
|
|
19
|
+
let passRoled = routeRoles ? roles?.some((r) => routeRoles.indexOf(r) >= 0) : true;
|
|
20
|
+
if (authenticated && !passRoled) {
|
|
21
|
+
router.navigate(['/forbidden']);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (authenticated) {
|
|
25
|
+
if (window.location.href.includes(environment.accountsUrl) && !isContinue) {
|
|
26
|
+
window.location.href = environment.myaccountUrl;
|
|
27
|
+
}
|
|
28
|
+
if (isContinue) {
|
|
29
|
+
window.location.href = continueUrl;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (!isContinue) {
|
|
34
|
+
window.location.href = environment.accountsUrl + `/signin?continue=${window.location.href}`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvZ3VhcmRzL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFxQyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBdUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDNUUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRTtRQUMvQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25GLElBQUksYUFBYSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUNsRCxDQUFDO1lBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsV0FBVyxHQUFHLG9CQUFvQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlGLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZEZuLCBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBBdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gfCBDYW5BY3RpdmF0ZUNoaWxkRm4gPSAocm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gaW5qZWN0KEFQUF9DT05GSUcpO1xuICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgaXNDb250aW51ZSA9IHN0YXRlLnVybC5pbmNsdWRlcygnY29udGludWUnKTtcbiAgY29uc3QgY29udGludWVVcmwgPSByb3V0ZS5xdWVyeVBhcmFtc1snY29udGludWUnXTtcbiAgaWYgKCFpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkge1xuICAgIHJldHVybiBvZihmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIGF1dGhTZXJ2aWNlLmludHJvc3BlY3QoKS5waXBlKFxuICAgIG1hcCgoeyByb2xlcywgYXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICBjb25zdCByb3V0ZVJvbGVzID0gcm91dGUuZGF0YVsncm9sZXMnXTtcbiAgICAgIGxldCBwYXNzUm9sZWQgPSByb3V0ZVJvbGVzID8gcm9sZXM/LnNvbWUoKHIpID0+IHJvdXRlUm9sZXMuaW5kZXhPZihyKSA+PSAwKSA6IHRydWU7XG4gICAgICBpZiAoYXV0aGVudGljYXRlZCAmJiAhcGFzc1JvbGVkKSB7XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZShbJy9mb3JiaWRkZW4nXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChhdXRoZW50aWNhdGVkKSB7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcyhlbnZpcm9ubWVudC5hY2NvdW50c1VybCkgJiYgIWlzQ29udGludWUpIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGVudmlyb25tZW50Lm15YWNjb3VudFVybDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb250aW51ZSkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gY29udGludWVVcmw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghaXNDb250aW51ZSkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgKyBgL3NpZ25pbj9jb250aW51ZT0ke3dpbmRvdy5sb2NhdGlvbi5ocmVmfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pLFxuICApO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { AuthGuard } from './auth.guard';
|
|
2
|
+
export { AuthDialogGuard } from './auth-dialog.guard';
|
|
3
|
+
export { RoleGuard } from './role.guard';
|
|
4
|
+
export { PermissionGuard } from './permission.guard';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYXV0aC9zcmMvbGliL2d1YXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XG5leHBvcnQgeyBBdXRoRGlhbG9nR3VhcmQgfSBmcm9tICcuL2F1dGgtZGlhbG9nLmd1YXJkJztcbmV4cG9ydCB7IFJvbGVHdWFyZCB9IGZyb20gJy4vcm9sZS5ndWFyZCc7XG5leHBvcnQgeyBQZXJtaXNzaW9uR3VhcmQgfSBmcm9tICcuL3Blcm1pc3Npb24uZ3VhcmQnO1xuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PLATFORM_ID, inject } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { AuthService } from '../services/auth.service';
|
|
4
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
5
|
+
export const PermissionGuard = (route, state) => {
|
|
6
|
+
const authService = inject(AuthService);
|
|
7
|
+
const environment = inject(APP_CONFIG);
|
|
8
|
+
const platformId = inject(PLATFORM_ID);
|
|
9
|
+
const isContinue = state.url.includes('continue');
|
|
10
|
+
const continueUrl = route.queryParams['continue'];
|
|
11
|
+
// if (!isPlatformBrowser(platformId)) {
|
|
12
|
+
// return of(false);
|
|
13
|
+
// }
|
|
14
|
+
return of(false);
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvZ3VhcmRzL3Blcm1pc3Npb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3RELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUF1QixFQUFFO0lBQ2xGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFbEQsd0NBQXdDO0lBQ3hDLHNCQUFzQjtJQUN0QixJQUFJO0lBRUosT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBUFBfQ09ORklHIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFBlcm1pc3Npb25HdWFyZDogQ2FuQWN0aXZhdGVGbiA9IChyb3V0ZSwgc3RhdGUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGNvbnN0IGlzQ29udGludWUgPSBzdGF0ZS51cmwuaW5jbHVkZXMoJ2NvbnRpbnVlJyk7XG4gIGNvbnN0IGNvbnRpbnVlVXJsID0gcm91dGUucXVlcnlQYXJhbXNbJ2NvbnRpbnVlJ107XG5cbiAgLy8gaWYgKCFpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkge1xuICAvLyAgIHJldHVybiBvZihmYWxzZSk7XG4gIC8vIH1cblxuICByZXR1cm4gb2YoZmFsc2UpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { filter } from 'rxjs/operators';
|
|
2
|
+
import { PLATFORM_ID, inject } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { map, of } from 'rxjs';
|
|
5
|
+
import { AuthService } from '../services/auth.service';
|
|
6
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
7
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
8
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
9
|
+
export const RoleGuard = (route, state) => {
|
|
10
|
+
const authService = inject(AuthService);
|
|
11
|
+
const environment = inject(APP_CONFIG);
|
|
12
|
+
const platformId = inject(PLATFORM_ID);
|
|
13
|
+
const snackBar = inject(MatSnackBar);
|
|
14
|
+
const router = inject(Router);
|
|
15
|
+
const isContinue = state.url.includes('continue');
|
|
16
|
+
const continueUrl = route.queryParams['continue'];
|
|
17
|
+
if (!isPlatformBrowser(platformId)) {
|
|
18
|
+
return of(false);
|
|
19
|
+
}
|
|
20
|
+
const routeRoles = route.data['roles'];
|
|
21
|
+
// if (!routeRoles) {
|
|
22
|
+
// return of(false);
|
|
23
|
+
// }
|
|
24
|
+
return authService.introspect().pipe(filter((res) => res.roles !== null && res.roles.length > 0), map(({ roles }) => {
|
|
25
|
+
const authed = roles.some((r) => routeRoles?.indexOf(r) >= 0);
|
|
26
|
+
if (!authed) {
|
|
27
|
+
router.navigate(['/forbidden']);
|
|
28
|
+
}
|
|
29
|
+
return authed;
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvZ3VhcmRzL3JvbGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBaUIsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQXVCLEVBQUU7SUFDNUUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsSUFBSTtJQUNKLE9BQU8sV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbEMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDM0QsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQTEFURk9STV9JRCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBSb2xlR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGUsIHN0YXRlKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3QgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIGNvbnN0IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBjb25zdCBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCBpc0NvbnRpbnVlID0gc3RhdGUudXJsLmluY2x1ZGVzKCdjb250aW51ZScpO1xuICBjb25zdCBjb250aW51ZVVybCA9IHJvdXRlLnF1ZXJ5UGFyYW1zWydjb250aW51ZSddO1xuICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgfVxuICBjb25zdCByb3V0ZVJvbGVzID0gcm91dGUuZGF0YVsncm9sZXMnXTtcbiAgLy8gaWYgKCFyb3V0ZVJvbGVzKSB7XG4gIC8vICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgLy8gfVxuICByZXR1cm4gYXV0aFNlcnZpY2UuaW50cm9zcGVjdCgpLnBpcGUoXG4gICAgZmlsdGVyKChyZXMpID0+IHJlcy5yb2xlcyAhPT0gbnVsbCAmJiByZXMucm9sZXMubGVuZ3RoID4gMCksXG4gICAgbWFwKCh7IHJvbGVzIH0pID0+IHtcbiAgICAgIGNvbnN0IGF1dGhlZCA9IHJvbGVzLnNvbWUoKHIpID0+IHJvdXRlUm9sZXM/LmluZGV4T2YocikgPj0gMCk7XG4gICAgICBpZiAoIWF1dGhlZCkge1xuICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvZm9yYmlkZGVuJ10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF1dGhlZDtcbiAgICB9KSxcbiAgKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { catchError, map } from 'rxjs/operators';
|
|
2
|
+
import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
4
|
+
import { NEVER, throwError } from 'rxjs';
|
|
5
|
+
import { AuthService } from '../services/auth.service';
|
|
6
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
7
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class AuthInterceptor {
|
|
10
|
+
environment = inject(APP_CONFIG);
|
|
11
|
+
platformId = inject(PLATFORM_ID);
|
|
12
|
+
authService = inject(AuthService);
|
|
13
|
+
constructor() { }
|
|
14
|
+
intercept(request, next) {
|
|
15
|
+
const authRequest = request.clone({
|
|
16
|
+
headers: request.headers.append('Client-Id', this.environment.clientId),
|
|
17
|
+
});
|
|
18
|
+
if (request.withCredentials) {
|
|
19
|
+
return next.handle(authRequest).pipe(map((res) => {
|
|
20
|
+
if (res instanceof HttpResponse && isPlatformBrowser(this.platformId)) {
|
|
21
|
+
// window.location.href = res.headers.get('Location') as string;
|
|
22
|
+
}
|
|
23
|
+
return res;
|
|
24
|
+
}), catchError((error) => {
|
|
25
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
26
|
+
if (error.url?.includes('auth/introspect')) {
|
|
27
|
+
// if (window.location.origin !== `${this.environment.accountsUrl}`) {
|
|
28
|
+
// window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;
|
|
29
|
+
// return NEVER;
|
|
30
|
+
// }
|
|
31
|
+
}
|
|
32
|
+
if (error instanceof HttpErrorResponse && error.error.code === 'G401') {
|
|
33
|
+
window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;
|
|
34
|
+
return NEVER;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return throwError(() => error);
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
const newRequest = request.clone({
|
|
41
|
+
headers: request.headers.append('Client-Id', this.environment.clientId),
|
|
42
|
+
});
|
|
43
|
+
return next.handle(newRequest);
|
|
44
|
+
}
|
|
45
|
+
addClientIdHeader(request) {
|
|
46
|
+
return request.clone({
|
|
47
|
+
setHeaders: {
|
|
48
|
+
'Client-id': this.environment.clientId,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
addCookieHeader(request, cookie) {
|
|
53
|
+
return request.clone({
|
|
54
|
+
setHeaders: {
|
|
55
|
+
Cookie: cookie,
|
|
56
|
+
'Client-id': this.environment.clientId,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthInterceptor });
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
64
|
+
type: Injectable
|
|
65
|
+
}], ctorParameters: () => [] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hdXRoL3NyYy9saWIvaW50ZXJjZXB0b3JzL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxHQUFHLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUF3RCxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3SCxPQUFPLEVBQUUsTUFBTSxFQUFVLFVBQVUsRUFBWSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHcEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsZ0JBQWUsQ0FBQztJQUNoQixTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDeEUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxHQUFHLFlBQVksWUFBWSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUN0RSxnRUFBZ0U7Z0JBQ2xFLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7d0JBQzNDLHNFQUFzRTt3QkFDdEUsc0dBQXNHO3dCQUN0RyxrQkFBa0I7d0JBQ2xCLElBQUk7b0JBQ04sQ0FBQztvQkFDRCxJQUFJLEtBQUssWUFBWSxpQkFBaUIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQzt3QkFDdEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pHLE9BQU8sS0FBSyxDQUFDO29CQUNmLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDL0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztTQUN4RSxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELGlCQUFpQixDQUFDLE9BQXlCO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuQixVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsT0FBeUIsRUFBRSxNQUFjO1FBQ3ZELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuQixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBdkRVLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3RydWN0b3IoKSB7fVxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgYXV0aFJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5hcHBlbmQoJ0NsaWVudC1JZCcsIHRoaXMuZW52aXJvbm1lbnQuY2xpZW50SWQpLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aFJlcXVlc3QpLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlcy5oZWFkZXJzLmdldCgnTG9jYXRpb24nKSBhcyBzdHJpbmc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmIChlcnJvci51cmw/LmluY2x1ZGVzKCdhdXRoL2ludHJvc3BlY3QnKSkge1xuICAgICAgICAgICAgICAvLyBpZiAod2luZG93LmxvY2F0aW9uLm9yaWdpbiAhPT0gYCR7dGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybH1gKSB7XG4gICAgICAgICAgICAgIC8vICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsfS9zaWduaW4/Y29udGludWU9YCArIHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAvLyAgIHJldHVybiBORVZFUjtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3IuZXJyb3IuY29kZSA9PT0gJ0c0MDEnKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybH0vc2lnbmluP2NvbnRpbnVlPWAgKyB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgbmV3UmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLmFwcGVuZCgnQ2xpZW50LUlkJywgdGhpcy5lbnZpcm9ubWVudC5jbGllbnRJZCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUobmV3UmVxdWVzdCk7XG4gIH1cbiAgYWRkQ2xpZW50SWRIZWFkZXIocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgJ0NsaWVudC1pZCc6IHRoaXMuZW52aXJvbm1lbnQuY2xpZW50SWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGFkZENvb2tpZUhlYWRlcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBjb29raWU6IHN0cmluZykge1xuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgQ29va2llOiBjb29raWUsXG4gICAgICAgICdDbGllbnQtaWQnOiB0aGlzLmVudmlyb25tZW50LmNsaWVudElkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Injectable, Optional, Inject } from '@angular/core';
|
|
2
|
+
import { REQUEST } from '@rolatech/angular-common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CookieInterceptor {
|
|
5
|
+
httpRequest;
|
|
6
|
+
constructor(httpRequest) {
|
|
7
|
+
this.httpRequest = httpRequest;
|
|
8
|
+
}
|
|
9
|
+
intercept(req, next) {
|
|
10
|
+
if (this.httpRequest) {
|
|
11
|
+
//If optional request is provided, we are server side
|
|
12
|
+
req = req.clone({
|
|
13
|
+
setHeaders: {
|
|
14
|
+
Cookie: this.httpRequest.headers.cookie,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return next.handle(req);
|
|
19
|
+
}
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CookieInterceptor, deps: [{ token: REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CookieInterceptor });
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CookieInterceptor, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
26
|
+
type: Optional
|
|
27
|
+
}, {
|
|
28
|
+
type: Inject,
|
|
29
|
+
args: [REQUEST]
|
|
30
|
+
}] }] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWF1dGgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvY29va2llLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR25ELE1BQU0sT0FBTyxpQkFBaUI7SUFDcUI7SUFBakQsWUFBaUQsV0FBVztRQUFYLGdCQUFXLEdBQVgsV0FBVyxDQUFBO0lBQUcsQ0FBQztJQUVoRSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIscURBQXFEO1lBQ3JELEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTTtpQkFDeEM7YUFDRixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO3VHQWJVLGlCQUFpQixrQkFDSSxPQUFPOzJHQUQ1QixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQUVJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUkVRVUVTVCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb29raWVJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoUkVRVUVTVCkgcHJpdmF0ZSBodHRwUmVxdWVzdCkge31cblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGlmICh0aGlzLmh0dHBSZXF1ZXN0KSB7XG4gICAgICAvL0lmIG9wdGlvbmFsIHJlcXVlc3QgaXMgcHJvdmlkZWQsIHdlIGFyZSBzZXJ2ZXIgc2lkZVxuICAgICAgcmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICAgIENvb2tpZTogdGhpcy5odHRwUmVxdWVzdC5oZWFkZXJzLmNvb2tpZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgfVxufVxuIl19
|