@abp/ng.oauth 7.2.2 → 7.3.0-rc.1
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/{esm2020 → esm2022}/abp-ng.oauth.mjs +4 -4
- package/{esm2020 → esm2022}/lib/guards/index.mjs +1 -1
- package/esm2022/lib/guards/oauth.guard.mjs +32 -0
- package/{esm2020 → esm2022}/lib/handlers/index.mjs +1 -1
- package/esm2022/lib/handlers/oauth-configuration.handler.mjs +37 -0
- package/esm2022/lib/interceptors/api.interceptor.mjs +57 -0
- package/{esm2020 → esm2022}/lib/interceptors/index.mjs +1 -1
- package/esm2022/lib/oauth.module.mjs +66 -0
- package/{esm2020 → esm2022}/lib/providers/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/providers/navigate-to-manage-profile.provider.mjs +18 -18
- package/{esm2020 → esm2022}/lib/services/index.mjs +1 -1
- package/esm2022/lib/services/oauth.service.mjs +62 -0
- package/esm2022/lib/strategies/auth-code-flow-strategy.mjs +40 -0
- package/esm2022/lib/strategies/auth-flow-strategy.mjs +81 -0
- package/{esm2020 → esm2022}/lib/strategies/auth-password-flow-strategy.mjs +66 -66
- package/{esm2020 → esm2022}/lib/strategies/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/tokens/auth-flow-strategy.mjs +10 -10
- package/{esm2020 → esm2022}/lib/tokens/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/auth-utils.mjs +25 -25
- package/{esm2020 → esm2022}/lib/utils/check-access-token.mjs +10 -10
- package/{esm2020 → esm2022}/lib/utils/clear-o-auth-storage.mjs +18 -18
- package/{esm2020 → esm2022}/lib/utils/index.mjs +5 -5
- package/{esm2020 → esm2022}/lib/utils/oauth-storage.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/storage.factory.mjs +4 -4
- package/{esm2020 → esm2022}/public-api.mjs +9 -9
- package/{fesm2020 → fesm2022}/abp-ng.oauth.mjs +436 -412
- package/fesm2022/abp-ng.oauth.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/guards/index.d.ts +1 -1
- package/lib/guards/oauth.guard.d.ts +13 -13
- package/lib/handlers/index.d.ts +1 -1
- package/lib/handlers/oauth-configuration.handler.d.ts +12 -12
- package/lib/interceptors/api.interceptor.d.ts +15 -15
- package/lib/interceptors/index.d.ts +1 -1
- package/lib/oauth.module.d.ts +10 -10
- package/lib/providers/index.d.ts +1 -1
- package/lib/providers/navigate-to-manage-profile.provider.d.ts +2 -2
- package/lib/services/index.d.ts +1 -1
- package/lib/services/oauth.service.d.ts +21 -21
- package/lib/strategies/auth-code-flow-strategy.d.ts +11 -11
- package/lib/strategies/auth-flow-strategy.d.ts +28 -26
- package/lib/strategies/auth-password-flow-strategy.d.ts +184 -184
- package/lib/strategies/index.d.ts +3 -3
- package/lib/tokens/auth-flow-strategy.d.ts +7 -7
- package/lib/tokens/index.d.ts +1 -1
- package/lib/utils/auth-utils.d.ts +4 -4
- package/lib/utils/check-access-token.d.ts +2 -2
- package/lib/utils/clear-o-auth-storage.d.ts +2 -2
- package/lib/utils/index.d.ts +5 -5
- package/lib/utils/oauth-storage.d.ts +1 -1
- package/lib/utils/storage.factory.d.ts +2 -2
- package/package.json +7 -13
- package/public-api.d.ts +9 -9
- package/esm2020/lib/guards/oauth.guard.mjs +0 -29
- package/esm2020/lib/handlers/oauth-configuration.handler.mjs +0 -36
- package/esm2020/lib/interceptors/api.interceptor.mjs +0 -56
- package/esm2020/lib/oauth.module.mjs +0 -65
- package/esm2020/lib/services/oauth.service.mjs +0 -61
- package/esm2020/lib/strategies/auth-code-flow-strategy.mjs +0 -35
- package/esm2020/lib/strategies/auth-flow-strategy.mjs +0 -64
- package/fesm2015/abp-ng.oauth.mjs +0 -469
- package/fesm2015/abp-ng.oauth.mjs.map +0 -1
- package/fesm2020/abp-ng.oauth.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLm9hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2FicC1uZy5vYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './oauth.guard';
|
|
1
|
+
export * from './oauth.guard';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2d1YXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb2F1dGguZ3VhcmQnO1xyXG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { delay, of, tap } from 'rxjs';
|
|
3
|
+
import { OAuthService } from 'angular-oauth2-oidc';
|
|
4
|
+
import { AuthService, HttpErrorReporterService } from '@abp/ng.core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
class AbpOAuthGuard {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.oAuthService = inject(OAuthService);
|
|
9
|
+
this.authService = inject(AuthService);
|
|
10
|
+
this.httpErrorReporter = inject(HttpErrorReporterService);
|
|
11
|
+
}
|
|
12
|
+
canActivate(route, state) {
|
|
13
|
+
const hasValidAccessToken = this.oAuthService.hasValidAccessToken();
|
|
14
|
+
if (hasValidAccessToken) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return of(false).pipe(tap(() => this.httpErrorReporter.reportError({ status: 401 })), delay(1500), tap(() => {
|
|
18
|
+
const params = { returnUrl: state.url };
|
|
19
|
+
this.authService.navigateToLogin(params);
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
23
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' }); }
|
|
24
|
+
}
|
|
25
|
+
export { AbpOAuthGuard };
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthGuard, decorators: [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{
|
|
29
|
+
providedIn: 'root',
|
|
30
|
+
}]
|
|
31
|
+
}] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2d1YXJkcy9vYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRCxPQUFPLEVBQWMsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQWEsTUFBTSxjQUFjLENBQUM7O0FBRWhGLE1BR2EsYUFBYTtJQUgxQjtRQUlxQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQW9CekU7SUFsQkMsV0FBVyxDQUNULEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BFLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUF1QixDQUFDLENBQUMsRUFDbkYsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUNYLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxNQUFNLE1BQU0sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBdEJVLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07O1NBRVAsYUFBYTsyRkFBYixhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVcmxUcmVlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsIElBYnBHdWFyZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWJwT0F1dGhHdWFyZCBpbXBsZW1lbnRzIElBYnBHdWFyZCB7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9BdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHBFcnJvclJlcG9ydGVyID0gaW5qZWN0KEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSk7XHJcblxyXG4gIGNhbkFjdGl2YXRlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgY29uc3QgaGFzVmFsaWRBY2Nlc3NUb2tlbiA9IHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcclxuICAgIGlmIChoYXNWYWxpZEFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvZihmYWxzZSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0RXJyb3IoeyBzdGF0dXM6IDQwMSB9IGFzIEh0dHBFcnJvclJlc3BvbnNlKSksXHJcbiAgICAgIGRlbGF5KDE1MDApLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgcmV0dXJuVXJsOiBzdGF0ZS51cmwgfTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLm5hdmlnYXRlVG9Mb2dpbihwYXJhbXMpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './oauth-configuration.handler';
|
|
1
|
+
export * from './oauth-configuration.handler';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2hhbmRsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29hdXRoLWNvbmZpZ3VyYXRpb24uaGFuZGxlcic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { OAuthService } from "angular-oauth2-oidc";
|
|
3
|
+
import compare from 'just-compare';
|
|
4
|
+
import { filter, map } from 'rxjs/operators';
|
|
5
|
+
import { EnvironmentService, CORE_OPTIONS } from '@abp/ng.core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "angular-oauth2-oidc";
|
|
8
|
+
import * as i2 from "@abp/ng.core";
|
|
9
|
+
class OAuthConfigurationHandler {
|
|
10
|
+
constructor(oAuthService, environmentService, options) {
|
|
11
|
+
this.oAuthService = oAuthService;
|
|
12
|
+
this.environmentService = environmentService;
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.listenToSetEnvironment();
|
|
15
|
+
}
|
|
16
|
+
listenToSetEnvironment() {
|
|
17
|
+
this.environmentService
|
|
18
|
+
.createOnUpdateStream(state => state)
|
|
19
|
+
.pipe(map(environment => environment.oAuthConfig), filter(config => !compare(config, this.options.environment.oAuthConfig)))
|
|
20
|
+
.subscribe((config) => {
|
|
21
|
+
this.oAuthService.configure(config);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: OAuthConfigurationHandler, deps: [{ token: i1.OAuthService }, { token: i2.EnvironmentService }, { token: CORE_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' }); }
|
|
26
|
+
}
|
|
27
|
+
export { OAuthConfigurationHandler };
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: 'root',
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.EnvironmentService }, { type: undefined, decorators: [{
|
|
34
|
+
type: Inject,
|
|
35
|
+
args: [CORE_OPTIONS]
|
|
36
|
+
}] }]; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtY29uZmlndXJhdGlvbi5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9oYW5kbGVycy9vYXV0aC1jb25maWd1cmF0aW9uLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBTyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFFckUsTUFHYSx5QkFBeUI7SUFDcEMsWUFDVSxZQUEwQixFQUMxQixrQkFBc0MsRUFDaEIsT0FBaUI7UUFGdkMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFVO1FBRS9DLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzthQUNwQyxJQUFJLENBQ0gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQXlCLENBQUMsRUFDekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3pFO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQW5CVSx5QkFBeUIsZ0ZBSTFCLFlBQVk7a0hBSlgseUJBQXlCLGNBRnhCLE1BQU07O1NBRVAseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aENvbmZpZywgT0F1dGhTZXJ2aWNlIH0gZnJvbSBcImFuZ3VsYXItb2F1dGgyLW9pZGNcIjtcclxuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFCUCwgRW52aXJvbm1lbnRTZXJ2aWNlLCBDT1JFX09QVElPTlMgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9BdXRoQ29uZmlndXJhdGlvbkhhbmRsZXIge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KENPUkVfT1BUSU9OUykgcHJpdmF0ZSBvcHRpb25zOiBBQlAuUm9vdCxcclxuICApIHtcclxuICAgIHRoaXMubGlzdGVuVG9TZXRFbnZpcm9ubWVudCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub1NldEVudmlyb25tZW50KCkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2VcclxuICAgICAgLmNyZWF0ZU9uVXBkYXRlU3RyZWFtKHN0YXRlID0+IHN0YXRlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoZW52aXJvbm1lbnQgPT4gZW52aXJvbm1lbnQub0F1dGhDb25maWcgYXMgQXV0aENvbmZpZyksXHJcbiAgICAgICAgZmlsdGVyKGNvbmZpZyA9PiAhY29tcGFyZShjb25maWcsIHRoaXMub3B0aW9ucy5lbnZpcm9ubWVudC5vQXV0aENvbmZpZykpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZShjb25maWcpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { OAuthService } from 'angular-oauth2-oidc';
|
|
3
|
+
import { finalize } from 'rxjs/operators';
|
|
4
|
+
import { HttpWaitService, IS_EXTERNAL_REQUEST, SessionStateService, TENANT_KEY, } from '@abp/ng.core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "angular-oauth2-oidc";
|
|
7
|
+
import * as i2 from "@abp/ng.core";
|
|
8
|
+
class OAuthApiInterceptor {
|
|
9
|
+
constructor(oAuthService, sessionState, httpWaitService, tenantKey) {
|
|
10
|
+
this.oAuthService = oAuthService;
|
|
11
|
+
this.sessionState = sessionState;
|
|
12
|
+
this.httpWaitService = httpWaitService;
|
|
13
|
+
this.tenantKey = tenantKey;
|
|
14
|
+
}
|
|
15
|
+
intercept(request, next) {
|
|
16
|
+
this.httpWaitService.addRequest(request);
|
|
17
|
+
const isExternalRequest = request.context?.get(IS_EXTERNAL_REQUEST);
|
|
18
|
+
const newRequest = isExternalRequest
|
|
19
|
+
? request
|
|
20
|
+
: request.clone({
|
|
21
|
+
setHeaders: this.getAdditionalHeaders(request.headers),
|
|
22
|
+
});
|
|
23
|
+
return next
|
|
24
|
+
.handle(newRequest)
|
|
25
|
+
.pipe(finalize(() => this.httpWaitService.deleteRequest(request)));
|
|
26
|
+
}
|
|
27
|
+
getAdditionalHeaders(existingHeaders) {
|
|
28
|
+
const headers = {};
|
|
29
|
+
const token = this.oAuthService.getAccessToken();
|
|
30
|
+
if (!existingHeaders?.has('Authorization') && token) {
|
|
31
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
32
|
+
}
|
|
33
|
+
const lang = this.sessionState.getLanguage();
|
|
34
|
+
if (!existingHeaders?.has('Accept-Language') && lang) {
|
|
35
|
+
headers['Accept-Language'] = lang;
|
|
36
|
+
}
|
|
37
|
+
const tenant = this.sessionState.getTenant();
|
|
38
|
+
if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {
|
|
39
|
+
headers[this.tenantKey] = tenant.id;
|
|
40
|
+
}
|
|
41
|
+
headers['X-Requested-With'] = 'XMLHttpRequest';
|
|
42
|
+
return headers;
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: OAuthApiInterceptor, deps: [{ token: i1.OAuthService }, { token: i2.SessionStateService }, { token: i2.HttpWaitService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' }); }
|
|
46
|
+
}
|
|
47
|
+
export { OAuthApiInterceptor };
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: OAuthApiInterceptor, decorators: [{
|
|
49
|
+
type: Injectable,
|
|
50
|
+
args: [{
|
|
51
|
+
providedIn: 'root',
|
|
52
|
+
}]
|
|
53
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.SessionStateService }, { type: i2.HttpWaitService }, { type: undefined, decorators: [{
|
|
54
|
+
type: Inject,
|
|
55
|
+
args: [TENANT_KEY]
|
|
56
|
+
}] }]; } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXBpLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUNMLGVBQWUsRUFFZixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGNBQWMsQ0FBQzs7OztBQUV0QixNQUdhLG1CQUFtQjtJQUM5QixZQUNVLFlBQTBCLEVBQzFCLFlBQWlDLEVBQ2pDLGVBQWdDLEVBQ1osU0FBaUI7UUFIckMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFDNUMsQ0FBQztJQUVKLFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRSxNQUFNLFVBQVUsR0FBRyxpQkFBaUI7WUFDbEMsQ0FBQyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDWixVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDdkQsQ0FBQyxDQUFDO1FBRVAsT0FBTyxJQUFJO2FBQ1IsTUFBTSxDQUFDLFVBQVUsQ0FBQzthQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsZUFBNkI7UUFDaEQsTUFBTSxPQUFPLEdBQUcsRUFBUyxDQUFDO1FBRTFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSyxFQUFFO1lBQ25ELE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxVQUFVLEtBQUssRUFBRSxDQUFDO1NBQzlDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNwRCxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBRS9DLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBM0NVLG1CQUFtQixnSEFLcEIsVUFBVTtrSEFMVCxtQkFBbUIsY0FGbEIsTUFBTTs7U0FFUCxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU1JLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyLCBIdHRwSGVhZGVycywgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgSHR0cFdhaXRTZXJ2aWNlLFxyXG4gIElBcGlJbnRlcmNlcHRvcixcclxuICBJU19FWFRFUk5BTF9SRVFVRVNULFxyXG4gIFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbiAgVEVOQU5UX0tFWSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9BdXRoQXBpSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBJQXBpSW50ZXJjZXB0b3Ige1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwV2FpdFNlcnZpY2U6IEh0dHBXYWl0U2VydmljZSxcclxuICAgIEBJbmplY3QoVEVOQU5UX0tFWSkgcHJpdmF0ZSB0ZW5hbnRLZXk6IHN0cmluZyxcclxuICApIHt9XHJcblxyXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG4gICAgdGhpcy5odHRwV2FpdFNlcnZpY2UuYWRkUmVxdWVzdChyZXF1ZXN0KTtcclxuICAgIGNvbnN0IGlzRXh0ZXJuYWxSZXF1ZXN0ID0gcmVxdWVzdC5jb250ZXh0Py5nZXQoSVNfRVhURVJOQUxfUkVRVUVTVCk7XHJcbiAgICBjb25zdCBuZXdSZXF1ZXN0ID0gaXNFeHRlcm5hbFJlcXVlc3RcclxuICAgICAgPyByZXF1ZXN0XHJcbiAgICAgIDogcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgICBzZXRIZWFkZXJzOiB0aGlzLmdldEFkZGl0aW9uYWxIZWFkZXJzKHJlcXVlc3QuaGVhZGVycyksXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG5leHRcclxuICAgICAgLmhhbmRsZShuZXdSZXF1ZXN0KVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmh0dHBXYWl0U2VydmljZS5kZWxldGVSZXF1ZXN0KHJlcXVlc3QpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRpdGlvbmFsSGVhZGVycyhleGlzdGluZ0hlYWRlcnM/OiBIdHRwSGVhZGVycykge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHt9IGFzIGFueTtcclxuXHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMub0F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSGVhZGVycz8uaGFzKCdBdXRob3JpemF0aW9uJykgJiYgdG9rZW4pIHtcclxuICAgICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJlYXJlciAke3Rva2VufWA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbGFuZyA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlKCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSGVhZGVycz8uaGFzKCdBY2NlcHQtTGFuZ3VhZ2UnKSAmJiBsYW5nKSB7XHJcbiAgICAgIGhlYWRlcnNbJ0FjY2VwdC1MYW5ndWFnZSddID0gbGFuZztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0ZW5hbnQgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRUZW5hbnQoKTtcclxuICAgIGlmICghZXhpc3RpbmdIZWFkZXJzPy5oYXModGhpcy50ZW5hbnRLZXkpICYmIHRlbmFudD8uaWQpIHtcclxuICAgICAgaGVhZGVyc1t0aGlzLnRlbmFudEtleV0gPSB0ZW5hbnQuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaGVhZGVyc1snWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcclxuXHJcbiAgICByZXR1cm4gaGVhZGVycztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './api.interceptor';
|
|
1
|
+
export * from './api.interceptor';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2ludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcGkuaW50ZXJjZXB0b3InO1xyXG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
|
|
4
|
+
import { AbpLocalStorageService, ApiInterceptor, AuthGuard, AuthService, CHECK_AUTHENTICATION_STATE_FN_KEY, noop, PIPE_TO_LOGIN_FN_KEY, } from '@abp/ng.core';
|
|
5
|
+
import { AbpOAuthService } from './services';
|
|
6
|
+
import { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';
|
|
7
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
8
|
+
import { OAuthApiInterceptor } from './interceptors/api.interceptor';
|
|
9
|
+
import { AbpOAuthGuard } from './guards/oauth.guard';
|
|
10
|
+
import { NavigateToManageProfileProvider } from './providers';
|
|
11
|
+
import { checkAccessToken, pipeToLogin } from './utils';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
class AbpOAuthModule {
|
|
14
|
+
static forRoot() {
|
|
15
|
+
return {
|
|
16
|
+
ngModule: AbpOAuthModule,
|
|
17
|
+
providers: [
|
|
18
|
+
{
|
|
19
|
+
provide: AuthService,
|
|
20
|
+
useClass: AbpOAuthService,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
provide: AuthGuard,
|
|
24
|
+
useClass: AbpOAuthGuard,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
provide: ApiInterceptor,
|
|
28
|
+
useClass: OAuthApiInterceptor,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
provide: PIPE_TO_LOGIN_FN_KEY,
|
|
32
|
+
useValue: pipeToLogin,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
provide: CHECK_AUTHENTICATION_STATE_FN_KEY,
|
|
36
|
+
useValue: checkAccessToken,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
provide: HTTP_INTERCEPTORS,
|
|
40
|
+
useExisting: ApiInterceptor,
|
|
41
|
+
multi: true,
|
|
42
|
+
},
|
|
43
|
+
NavigateToManageProfileProvider,
|
|
44
|
+
{
|
|
45
|
+
provide: APP_INITIALIZER,
|
|
46
|
+
multi: true,
|
|
47
|
+
deps: [OAuthConfigurationHandler],
|
|
48
|
+
useFactory: noop,
|
|
49
|
+
},
|
|
50
|
+
OAuthModule.forRoot().providers,
|
|
51
|
+
{ provide: OAuthStorage, useClass: AbpLocalStorageService },
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
56
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] }); }
|
|
57
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] }); }
|
|
58
|
+
}
|
|
59
|
+
export { AbpOAuthModule };
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthModule, decorators: [{
|
|
61
|
+
type: NgModule,
|
|
62
|
+
args: [{
|
|
63
|
+
imports: [CommonModule, OAuthModule],
|
|
64
|
+
}]
|
|
65
|
+
}] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9vYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBdUIsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUNBQWlDLEVBQ2pDLElBQUksRUFDSixvQkFBb0IsR0FDckIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXhELE1BR2EsY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLFFBQVEsRUFBRSxlQUFlO2lCQUMxQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsU0FBUztvQkFDbEIsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxjQUFjO29CQUN2QixRQUFRLEVBQUUsbUJBQW1CO2lCQUM5QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixRQUFRLEVBQUUsV0FBVztpQkFDdEI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGlDQUFpQztvQkFDMUMsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLGNBQWM7b0JBQzNCLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNELCtCQUErQjtnQkFDL0I7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0JBQ0QsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQXVCO2dCQUM3QyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO2FBQzVEO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBekNVLGNBQWM7K0dBQWQsY0FBYyxZQUZmLFlBQVksRUFBRSxXQUFXOytHQUV4QixjQUFjLFlBRmYsWUFBWSxFQUFFLFdBQVc7O1NBRXhCLGNBQWM7MkZBQWQsY0FBYztrQkFIMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE9BdXRoTW9kdWxlLCBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHtcclxuICBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIEFwaUludGVyY2VwdG9yLFxyXG4gIEF1dGhHdWFyZCxcclxuICBBdXRoU2VydmljZSxcclxuICBDSEVDS19BVVRIRU5USUNBVElPTl9TVEFURV9GTl9LRVksXHJcbiAgbm9vcCxcclxuICBQSVBFX1RPX0xPR0lOX0ZOX0tFWSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBBYnBPQXV0aFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgT0F1dGhDb25maWd1cmF0aW9uSGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMvb2F1dGgtY29uZmlndXJhdGlvbi5oYW5kbGVyJztcclxuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9BdXRoQXBpSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBBYnBPQXV0aEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvb2F1dGguZ3VhcmQnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0ZVRvTWFuYWdlUHJvZmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBjaGVja0FjY2Vzc1Rva2VuLCBwaXBlVG9Mb2dpbiB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBPQXV0aE1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBPQXV0aE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBYnBPQXV0aE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEFicE9BdXRoTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBBdXRoU2VydmljZSxcclxuICAgICAgICAgIHVzZUNsYXNzOiBBYnBPQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBBdXRoR3VhcmQsXHJcbiAgICAgICAgICB1c2VDbGFzczogQWJwT0F1dGhHdWFyZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEFwaUludGVyY2VwdG9yLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6IE9BdXRoQXBpSW50ZXJjZXB0b3IsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBQSVBFX1RPX0xPR0lOX0ZOX0tFWSxcclxuICAgICAgICAgIHVzZVZhbHVlOiBwaXBlVG9Mb2dpbixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IENIRUNLX0FVVEhFTlRJQ0FUSU9OX1NUQVRFX0ZOX0tFWSxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjaGVja0FjY2Vzc1Rva2VuLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgICAgICB1c2VFeGlzdGluZzogQXBpSW50ZXJjZXB0b3IsXHJcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIE5hdmlnYXRlVG9NYW5hZ2VQcm9maWxlUHJvdmlkZXIsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgICBkZXBzOiBbT0F1dGhDb25maWd1cmF0aW9uSGFuZGxlcl0sXHJcbiAgICAgICAgICB1c2VGYWN0b3J5OiBub29wLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgT0F1dGhNb2R1bGUuZm9yUm9vdCgpLnByb3ZpZGVycyBhcyBQcm92aWRlcltdLFxyXG4gICAgICAgIHsgcHJvdmlkZTogT0F1dGhTdG9yYWdlLCB1c2VDbGFzczogQWJwTG9jYWxTdG9yYWdlU2VydmljZSB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './navigate-to-manage-profile.provider';
|
|
1
|
+
export * from './navigate-to-manage-profile.provider';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0ZS10by1tYW5hZ2UtcHJvZmlsZS5wcm92aWRlcic7XHJcbiJdfQ==
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { inject } from '@angular/core';
|
|
2
|
-
import { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';
|
|
3
|
-
export const NavigateToManageProfileProvider = {
|
|
4
|
-
provide: NAVIGATE_TO_MANAGE_PROFILE,
|
|
5
|
-
useFactory: () => {
|
|
6
|
-
const environment = inject(EnvironmentService);
|
|
7
|
-
return () => {
|
|
8
|
-
const env = environment.getEnvironment();
|
|
9
|
-
if (!env.oAuthConfig) {
|
|
10
|
-
console.warn('The oAuthConfig env is missing on environment.ts');
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const { issuer } = env.oAuthConfig;
|
|
14
|
-
const path = issuer.endsWith('/') ? issuer : `${issuer}/`;
|
|
15
|
-
window.open(`${path}Account/Manage?returnUrl=${window.location.href}`, '_self');
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
};
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';
|
|
3
|
+
export const NavigateToManageProfileProvider = {
|
|
4
|
+
provide: NAVIGATE_TO_MANAGE_PROFILE,
|
|
5
|
+
useFactory: () => {
|
|
6
|
+
const environment = inject(EnvironmentService);
|
|
7
|
+
return () => {
|
|
8
|
+
const env = environment.getEnvironment();
|
|
9
|
+
if (!env.oAuthConfig) {
|
|
10
|
+
console.warn('The oAuthConfig env is missing on environment.ts');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const { issuer } = env.oAuthConfig;
|
|
14
|
+
const path = issuer.endsWith('/') ? issuer : `${issuer}/`;
|
|
15
|
+
window.open(`${path}Account/Manage?returnUrl=${window.location.href}`, '_self');
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
19
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGUtdG8tbWFuYWdlLXByb2ZpbGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Byb3ZpZGVycy9uYXZpZ2F0ZS10by1tYW5hZ2UtcHJvZmlsZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBYTtJQUN2RCxPQUFPLEVBQUUsMEJBQTBCO0lBQ25DLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDZixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvQyxPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPO2FBQ1I7WUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUM7WUFDMUQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksNEJBQTRCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSwgTkFWSUdBVEVfVE9fTUFOQUdFX1BST0ZJTEUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE5hdmlnYXRlVG9NYW5hZ2VQcm9maWxlUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xyXG4gIHByb3ZpZGU6IE5BVklHQVRFX1RPX01BTkFHRV9QUk9GSUxFLFxyXG4gIHVzZUZhY3Rvcnk6ICgpID0+IHtcclxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gaW5qZWN0KEVudmlyb25tZW50U2VydmljZSk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc3QgZW52ID0gZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKTtcclxuICAgICAgaWYgKCFlbnYub0F1dGhDb25maWcpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBvQXV0aENvbmZpZyBlbnYgaXMgbWlzc2luZyBvbiBlbnZpcm9ubWVudC50cycpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgeyBpc3N1ZXIgfSA9IGVudi5vQXV0aENvbmZpZztcclxuICAgICAgY29uc3QgcGF0aCA9IGlzc3Vlci5lbmRzV2l0aCgnLycpID8gaXNzdWVyIDogYCR7aXNzdWVyfS9gO1xyXG4gICAgICB3aW5kb3cub3BlbihgJHtwYXRofUFjY291bnQvTWFuYWdlP3JldHVyblVybD0ke3dpbmRvdy5sb2NhdGlvbi5ocmVmfWAsICdfc2VsZicpO1xyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './oauth.service';
|
|
1
|
+
export * from './oauth.service';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xyXG4iXX0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { from, lastValueFrom } from 'rxjs';
|
|
3
|
+
import { filter, map, switchMap, take, tap } from 'rxjs/operators';
|
|
4
|
+
import { EnvironmentService } from '@abp/ng.core';
|
|
5
|
+
import { AUTH_FLOW_STRATEGY } from '../tokens/auth-flow-strategy';
|
|
6
|
+
import { OAuthService } from 'angular-oauth2-oidc';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
class AbpOAuthService {
|
|
9
|
+
get isInternalAuth() {
|
|
10
|
+
return this.strategy.isInternalAuth;
|
|
11
|
+
}
|
|
12
|
+
constructor(injector) {
|
|
13
|
+
this.injector = injector;
|
|
14
|
+
this.oAuthService = this.injector.get(OAuthService);
|
|
15
|
+
}
|
|
16
|
+
async init() {
|
|
17
|
+
const environmentService = this.injector.get(EnvironmentService);
|
|
18
|
+
const result$ = environmentService.getEnvironment$().pipe(map(env => env?.oAuthConfig), filter(Boolean), tap(oAuthConfig => {
|
|
19
|
+
this.strategy =
|
|
20
|
+
oAuthConfig.responseType === 'code'
|
|
21
|
+
? AUTH_FLOW_STRATEGY.Code(this.injector)
|
|
22
|
+
: AUTH_FLOW_STRATEGY.Password(this.injector);
|
|
23
|
+
}), switchMap(() => from(this.strategy.init())), take(1));
|
|
24
|
+
return await lastValueFrom(result$);
|
|
25
|
+
}
|
|
26
|
+
logout(queryParams) {
|
|
27
|
+
return this.strategy.logout(queryParams);
|
|
28
|
+
}
|
|
29
|
+
navigateToLogin(queryParams) {
|
|
30
|
+
this.strategy.navigateToLogin(queryParams);
|
|
31
|
+
}
|
|
32
|
+
login(params) {
|
|
33
|
+
return this.strategy.login(params);
|
|
34
|
+
}
|
|
35
|
+
get isAuthenticated() {
|
|
36
|
+
return this.oAuthService.hasValidAccessToken();
|
|
37
|
+
}
|
|
38
|
+
loginUsingGrant(grantType, parameters, headers) {
|
|
39
|
+
const { clientId: client_id, dummyClientSecret: client_secret } = this.oAuthService;
|
|
40
|
+
const access_token = this.oAuthService.getAccessToken();
|
|
41
|
+
const p = {
|
|
42
|
+
access_token,
|
|
43
|
+
grant_type: grantType,
|
|
44
|
+
client_id,
|
|
45
|
+
...parameters,
|
|
46
|
+
};
|
|
47
|
+
if (client_secret) {
|
|
48
|
+
p['client_secret'] = client_secret;
|
|
49
|
+
}
|
|
50
|
+
return this.oAuthService.fetchTokenUsingGrant(grantType, p, headers);
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthService, providedIn: 'root' }); }
|
|
54
|
+
}
|
|
55
|
+
export { AbpOAuthService };
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpOAuthService, decorators: [{
|
|
57
|
+
type: Injectable,
|
|
58
|
+
args: [{
|
|
59
|
+
providedIn: 'root',
|
|
60
|
+
}]
|
|
61
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvc2VydmljZXMvb2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR25ELE1BR2EsZUFBZTtJQUkxQixJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVqRSxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUTtnQkFDWCxXQUFXLENBQUMsWUFBWSxLQUFLLE1BQU07b0JBQ2pDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7UUFFRixPQUFPLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQW9CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBbUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlLENBQ2IsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsT0FBcUI7UUFFckIsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxHQUFHO1lBQ1IsWUFBWTtZQUNaLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFNBQVM7WUFDVCxHQUFHLFVBQVU7U0FDZCxDQUFDO1FBRUYsSUFBSSxhQUFhLEVBQUU7WUFDakIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7OEdBbEVVLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07O1NBRVAsZUFBZTsyRkFBZixlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBYnBBdXRoUmVzcG9uc2UsIElBdXRoU2VydmljZSwgTG9naW5QYXJhbXMgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBBdXRoRmxvd1N0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcyc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEFVVEhfRkxPV19TVFJBVEVHWSB9IGZyb20gJy4uL3Rva2Vucy9hdXRoLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWJwT0F1dGhTZXJ2aWNlIGltcGxlbWVudHMgSUF1dGhTZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0cmF0ZWd5ITogQXV0aEZsb3dTdHJhdGVneTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlO1xyXG5cclxuICBnZXQgaXNJbnRlcm5hbEF1dGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVneS5pc0ludGVybmFsQXV0aDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0F1dGhTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXQoKSB7XHJcbiAgICBjb25zdCBlbnZpcm9ubWVudFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCQgPSBlbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQkKCkucGlwZShcclxuICAgICAgbWFwKGVudiA9PiBlbnY/Lm9BdXRoQ29uZmlnKSxcclxuICAgICAgZmlsdGVyKEJvb2xlYW4pLFxyXG4gICAgICB0YXAob0F1dGhDb25maWcgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RyYXRlZ3kgPVxyXG4gICAgICAgICAgb0F1dGhDb25maWcucmVzcG9uc2VUeXBlID09PSAnY29kZSdcclxuICAgICAgICAgICAgPyBBVVRIX0ZMT1dfU1RSQVRFR1kuQ29kZSh0aGlzLmluamVjdG9yKVxyXG4gICAgICAgICAgICA6IEFVVEhfRkxPV19TVFJBVEVHWS5QYXNzd29yZCh0aGlzLmluamVjdG9yKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBmcm9tKHRoaXMuc3RyYXRlZ3kuaW5pdCgpKSksXHJcbiAgICAgIHRha2UoMSksXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBsYXN0VmFsdWVGcm9tKHJlc3VsdCQpO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5LmxvZ291dChxdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIHRoaXMuc3RyYXRlZ3kubmF2aWdhdGVUb0xvZ2luKHF1ZXJ5UGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGxvZ2luKHBhcmFtczogTG9naW5QYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5LmxvZ2luKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcclxuICB9XHJcblxyXG4gIGxvZ2luVXNpbmdHcmFudChcclxuICAgIGdyYW50VHlwZTogc3RyaW5nLFxyXG4gICAgcGFyYW1ldGVyczogb2JqZWN0LFxyXG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzLFxyXG4gICk6IFByb21pc2U8QWJwQXV0aFJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCB7IGNsaWVudElkOiBjbGllbnRfaWQsIGR1bW15Q2xpZW50U2VjcmV0OiBjbGllbnRfc2VjcmV0IH0gPSB0aGlzLm9BdXRoU2VydmljZTtcclxuICAgIGNvbnN0IGFjY2Vzc190b2tlbiA9IHRoaXMub0F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICBjb25zdCBwID0ge1xyXG4gICAgICBhY2Nlc3NfdG9rZW4sXHJcbiAgICAgIGdyYW50X3R5cGU6IGdyYW50VHlwZSxcclxuICAgICAgY2xpZW50X2lkLFxyXG4gICAgICAuLi5wYXJhbWV0ZXJzLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY2xpZW50X3NlY3JldCkge1xyXG4gICAgICBwWydjbGllbnRfc2VjcmV0J10gPSBjbGllbnRfc2VjcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5mZXRjaFRva2VuVXNpbmdHcmFudChncmFudFR5cGUsIHAsIGhlYWRlcnMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { noop } from '@abp/ng.core';
|
|
2
|
+
import { from, of } from 'rxjs';
|
|
3
|
+
import { AuthFlowStrategy } from './auth-flow-strategy';
|
|
4
|
+
export class AuthCodeFlowStrategy extends AuthFlowStrategy {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.isInternalAuth = false;
|
|
8
|
+
}
|
|
9
|
+
async init() {
|
|
10
|
+
return super
|
|
11
|
+
.init()
|
|
12
|
+
.then(() => this.oAuthService.tryLogin().catch(noop))
|
|
13
|
+
.then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));
|
|
14
|
+
}
|
|
15
|
+
navigateToLogin(queryParams) {
|
|
16
|
+
let additionalState = '';
|
|
17
|
+
if (queryParams?.returnUrl) {
|
|
18
|
+
additionalState = queryParams.returnUrl;
|
|
19
|
+
}
|
|
20
|
+
const cultureParams = this.getCultureParams(queryParams);
|
|
21
|
+
this.oAuthService.initCodeFlow(additionalState, cultureParams);
|
|
22
|
+
}
|
|
23
|
+
checkIfInternalAuth(queryParams) {
|
|
24
|
+
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
logout(queryParams) {
|
|
28
|
+
return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));
|
|
29
|
+
}
|
|
30
|
+
login(queryParams) {
|
|
31
|
+
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
32
|
+
return of(null);
|
|
33
|
+
}
|
|
34
|
+
getCultureParams(queryParams) {
|
|
35
|
+
const lang = this.sessionState.getLanguage();
|
|
36
|
+
const culture = { culture: lang, 'ui-culture': lang };
|
|
37
|
+
return { ...(lang && culture), ...queryParams };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3N0cmF0ZWdpZXMvYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZ0JBQWdCO0lBQTFEOztRQUNXLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBc0NsQyxDQUFDO0lBcENDLEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxLQUFLO2FBQ1QsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxlQUFlLENBQUMsV0FBb0I7UUFDbEMsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksV0FBVyxFQUFFLFNBQVMsRUFBRTtZQUMxQixlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztTQUN6QztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELG1CQUFtQixDQUFDLFdBQW9CO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBb0I7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxXQUFvQjtRQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdEQsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub29wIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZnJvbSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aEZsb3dTdHJhdGVneSB9IGZyb20gJy4vYXV0aC1mbG93LXN0cmF0ZWd5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoQ29kZUZsb3dTdHJhdGVneSBleHRlbmRzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoID0gZmFsc2U7XHJcblxyXG4gIGFzeW5jIGluaXQoKSB7XHJcbiAgICByZXR1cm4gc3VwZXJcclxuICAgICAgLmluaXQoKVxyXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm9BdXRoU2VydmljZS50cnlMb2dpbigpLmNhdGNoKG5vb3ApKVxyXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGxldCBhZGRpdGlvbmFsU3RhdGUgPSAnJztcclxuICAgIGlmIChxdWVyeVBhcmFtcz8ucmV0dXJuVXJsKSB7XHJcbiAgICAgIGFkZGl0aW9uYWxTdGF0ZSA9IHF1ZXJ5UGFyYW1zLnJldHVyblVybDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdWx0dXJlUGFyYW1zID0gdGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKTtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdyhhZGRpdGlvbmFsU3RhdGUsIGN1bHR1cmVQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkludGVybmFsQXV0aChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuaW5pdENvZGVGbG93KCcnLCB0aGlzLmdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXMpKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvZ291dChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5vQXV0aFNlcnZpY2UucmV2b2tlVG9rZW5BbmRMb2dvdXQodGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSkpO1xyXG4gIH1cclxuXHJcbiAgbG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdygnJywgdGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSk7XHJcbiAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gICAgY29uc3QgY3VsdHVyZSA9IHsgY3VsdHVyZTogbGFuZywgJ3VpLWN1bHR1cmUnOiBsYW5nIH07XHJcbiAgICByZXR1cm4geyAuLi4obGFuZyAmJiBjdWx0dXJlKSwgLi4ucXVlcnlQYXJhbXMgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { OAuthErrorEvent, OAuthService as OAuthService2, } from 'angular-oauth2-oidc';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { filter, map, switchMap, take, tap } from 'rxjs/operators';
|
|
5
|
+
import { AbpLocalStorageService, ConfigStateService, EnvironmentService, HttpErrorReporterService, SessionStateService, TENANT_KEY, } from '@abp/ng.core';
|
|
6
|
+
import { clearOAuthStorage } from '../utils/clear-o-auth-storage';
|
|
7
|
+
import { oAuthStorage } from '../utils/oauth-storage';
|
|
8
|
+
export class AuthFlowStrategy {
|
|
9
|
+
constructor(injector) {
|
|
10
|
+
this.injector = injector;
|
|
11
|
+
this.catchError = (err) => {
|
|
12
|
+
this.httpErrorReporter.reportError(err);
|
|
13
|
+
return of(null);
|
|
14
|
+
};
|
|
15
|
+
this.httpErrorReporter = injector.get(HttpErrorReporterService);
|
|
16
|
+
this.environment = injector.get(EnvironmentService);
|
|
17
|
+
this.configState = injector.get(ConfigStateService);
|
|
18
|
+
this.oAuthService = injector.get(OAuthService2);
|
|
19
|
+
this.sessionState = injector.get(SessionStateService);
|
|
20
|
+
this.localStorageService = injector.get(AbpLocalStorageService);
|
|
21
|
+
this.oAuthConfig = this.environment.getEnvironment().oAuthConfig || {};
|
|
22
|
+
this.tenantKey = injector.get(TENANT_KEY);
|
|
23
|
+
this.router = injector.get(Router);
|
|
24
|
+
this.listenToOauthErrors();
|
|
25
|
+
}
|
|
26
|
+
async init() {
|
|
27
|
+
if (this.oAuthConfig.clientId) {
|
|
28
|
+
const shouldClear = shouldStorageClear(this.oAuthConfig.clientId, oAuthStorage);
|
|
29
|
+
if (shouldClear)
|
|
30
|
+
clearOAuthStorage(oAuthStorage);
|
|
31
|
+
}
|
|
32
|
+
this.oAuthService.configure(this.oAuthConfig);
|
|
33
|
+
this.oAuthService.events
|
|
34
|
+
.pipe(filter(event => event.type === 'token_refresh_error'))
|
|
35
|
+
.subscribe(() => this.navigateToLogin());
|
|
36
|
+
this.navigateToPreviousUrl();
|
|
37
|
+
return this.oAuthService
|
|
38
|
+
.loadDiscoveryDocument()
|
|
39
|
+
.then(() => {
|
|
40
|
+
if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
}
|
|
43
|
+
return this.refreshToken();
|
|
44
|
+
})
|
|
45
|
+
.catch(this.catchError);
|
|
46
|
+
}
|
|
47
|
+
navigateToPreviousUrl() {
|
|
48
|
+
const { responseType } = this.oAuthConfig;
|
|
49
|
+
if (responseType === 'code') {
|
|
50
|
+
this.oAuthService.events
|
|
51
|
+
.pipe(filter(event => event.type === 'token_received' && !!this.oAuthService.state), take(1), map(() => {
|
|
52
|
+
const redirect_uri = decodeURIComponent(this.oAuthService.state);
|
|
53
|
+
if (redirect_uri && redirect_uri !== '/') {
|
|
54
|
+
return redirect_uri;
|
|
55
|
+
}
|
|
56
|
+
return '/';
|
|
57
|
+
}), switchMap(redirectUri => this.configState.getOne$('currentUser').pipe(filter(user => !!user?.isAuthenticated), tap(() => this.router.navigate([redirectUri])))))
|
|
58
|
+
.subscribe();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
refreshToken() {
|
|
62
|
+
return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());
|
|
63
|
+
}
|
|
64
|
+
listenToOauthErrors() {
|
|
65
|
+
this.oAuthService.events
|
|
66
|
+
.pipe(filter(event => event instanceof OAuthErrorEvent), tap(() => clearOAuthStorage()), switchMap(() => this.configState.refreshAppState()))
|
|
67
|
+
.subscribe();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function shouldStorageClear(clientId, storage) {
|
|
71
|
+
const key = 'abpOAuthClientId';
|
|
72
|
+
if (!storage.getItem(key)) {
|
|
73
|
+
storage.setItem(key, clientId);
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
const shouldClear = storage.getItem(key) !== clientId;
|
|
77
|
+
if (shouldClear)
|
|
78
|
+
storage.setItem(key, clientId);
|
|
79
|
+
return shouldClear;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUVMLGVBQWUsRUFDZixZQUFZLElBQUksYUFBYSxHQUU5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBRXhCLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3RELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBdUJwQyxZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTGhDLGVBQVUsR0FBRyxDQUFDLEdBQXNCLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQUdBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFR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SUFDdEQsSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBBdXRoQ29uZmlnLFxyXG4gIE9BdXRoRXJyb3JFdmVudCxcclxuICBPQXV0aFNlcnZpY2UgYXMgT0F1dGhTZXJ2aWNlMixcclxuICBPQXV0aFN0b3JhZ2UsXHJcbn0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlLFxyXG4gIExvZ2luUGFyYW1zLFxyXG4gIFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbiAgVEVOQU5UX0tFWSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBjbGVhck9BdXRoU3RvcmFnZSB9IGZyb20gJy4uL3V0aWxzL2NsZWFyLW8tYXV0aC1zdG9yYWdlJztcclxuaW1wb3J0IHsgb0F1dGhTdG9yYWdlIH0gZnJvbSAnLi4vdXRpbHMvb2F1dGgtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoOiBib29sZWFuO1xyXG5cclxuICBwcm90ZWN0ZWQgaHR0cEVycm9yUmVwb3J0ZXI6IEh0dHBFcnJvclJlcG9ydGVyU2VydmljZTtcclxuICBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50U2VydmljZTtcclxuICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UyO1xyXG4gIHByb3RlY3RlZCBvQXV0aENvbmZpZyE6IEF1dGhDb25maWc7XHJcbiAgcHJvdGVjdGVkIHNlc3Npb25TdGF0ZTogU2Vzc2lvblN0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogQWJwTG9jYWxTdG9yYWdlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdGVuYW50S2V5OiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xyXG5cclxuICBhYnN0cmFjdCBjaGVja0lmSW50ZXJuYWxBdXRoKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogYm9vbGVhbjtcclxuICBhYnN0cmFjdCBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkO1xyXG4gIGFic3RyYWN0IGxvZ291dChxdWVyeVBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8YW55PjtcclxuICBhYnN0cmFjdCBsb2dpbihwYXJhbXM/OiBMb2dpblBhcmFtcyB8IFBhcmFtcyk6IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBjYXRjaEVycm9yID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0RXJyb3IoZXJyKTtcclxuICAgIHJldHVybiBvZihudWxsKTtcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyID0gaW5qZWN0b3IuZ2V0KEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSk7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50U2VydmljZSk7XHJcbiAgICB0aGlzLmNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZSA9IGluamVjdG9yLmdldChPQXV0aFNlcnZpY2UyKTtcclxuICAgIHRoaXMuc2Vzc2lvblN0YXRlID0gaW5qZWN0b3IuZ2V0KFNlc3Npb25TdGF0ZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFicExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5vQXV0aENvbmZpZyA9IHRoaXMuZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKS5vQXV0aENvbmZpZyB8fCB7fTtcclxuICAgIHRoaXMudGVuYW50S2V5ID0gaW5qZWN0b3IuZ2V0KFRFTkFOVF9LRVkpO1xyXG4gICAgdGhpcy5yb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcclxuXHJcbiAgICB0aGlzLmxpc3RlblRvT2F1dGhFcnJvcnMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLm9BdXRoQ29uZmlnLmNsaWVudElkKSB7XHJcbiAgICAgIGNvbnN0IHNob3VsZENsZWFyID0gc2hvdWxkU3RvcmFnZUNsZWFyKHRoaXMub0F1dGhDb25maWcuY2xpZW50SWQsIG9BdXRoU3RvcmFnZSk7XHJcbiAgICAgIGlmIChzaG91bGRDbGVhcikgY2xlYXJPQXV0aFN0b3JhZ2Uob0F1dGhTdG9yYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5vQXV0aENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVmcmVzaF9lcnJvcicpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG5cclxuICAgIHRoaXMubmF2aWdhdGVUb1ByZXZpb3VzVXJsKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlXHJcbiAgICAgIC5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSB8fCAhdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5jYXRjaEVycm9yKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZVRvUHJldmlvdXNVcmwoKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHJlc3BvbnNlVHlwZSB9ID0gdGhpcy5vQXV0aENvbmZpZztcclxuICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICdjb2RlJykge1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVjZWl2ZWQnICYmICEhdGhpcy5vQXV0aFNlcnZpY2Uuc3RhdGUpLFxyXG4gICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0X3VyaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLm9BdXRoU2VydmljZS5zdGF0ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVkaXJlY3RfdXJpICYmIHJlZGlyZWN0X3VyaSAhPT0gJy8nKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0X3VyaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gJy8nO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAocmVkaXJlY3RVcmkgPT5cclxuICAgICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUkKCdjdXJyZW50VXNlcicpLnBpcGUoXHJcbiAgICAgICAgICAgICAgZmlsdGVyKHVzZXIgPT4gISF1c2VyPy5pc0F1dGhlbnRpY2F0ZWQpLFxyXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RVcmldKSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvT2F1dGhFcnJvcnMoKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcclxuICAgICAgICB0YXAoKCkgPT4gY2xlYXJPQXV0aFN0b3JhZ2UoKSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3VsZFN0b3JhZ2VDbGVhcihjbGllbnRJZDogc3RyaW5nLCBzdG9yYWdlOiBPQXV0aFN0b3JhZ2UpOiBib29sZWFuIHtcclxuICBjb25zdCBrZXkgPSAnYWJwT0F1dGhDbGllbnRJZCc7XHJcbiAgaWYgKCFzdG9yYWdlLmdldEl0ZW0oa2V5KSkge1xyXG4gICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgY2xpZW50SWQpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgc2hvdWxkQ2xlYXIgPSBzdG9yYWdlLmdldEl0ZW0oa2V5KSAhPT0gY2xpZW50SWQ7XHJcbiAgaWYgKHNob3VsZENsZWFyKSBzdG9yYWdlLnNldEl0ZW0oa2V5LCBjbGllbnRJZCk7XHJcbiAgcmV0dXJuIHNob3VsZENsZWFyO1xyXG59XHJcbiJdfQ==
|