@abp/ng.oauth 7.0.0-rc.6
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/esm2020/abp-ng.oauth.mjs +5 -0
- package/esm2020/lib/guards/index.mjs +2 -0
- package/esm2020/lib/guards/oauth.guard.mjs +29 -0
- package/esm2020/lib/handlers/index.mjs +2 -0
- package/esm2020/lib/handlers/oauth-configuration.handler.mjs +36 -0
- package/esm2020/lib/interceptors/api.interceptor.mjs +52 -0
- package/esm2020/lib/interceptors/index.mjs +2 -0
- package/esm2020/lib/oauth.module.mjs +70 -0
- package/esm2020/lib/providers/index.mjs +2 -0
- package/esm2020/lib/providers/navigate-to-manage-profile.provider.mjs +17 -0
- package/esm2020/lib/services/index.mjs +2 -0
- package/esm2020/lib/services/oauth.service.mjs +48 -0
- package/esm2020/lib/strategies/auth-code-flow-strategy.mjs +35 -0
- package/esm2020/lib/strategies/auth-flow-strategy.mjs +61 -0
- package/esm2020/lib/strategies/auth-password-flow-strategy.mjs +67 -0
- package/esm2020/lib/strategies/index.mjs +4 -0
- package/esm2020/lib/tokens/auth-flow-strategy.mjs +11 -0
- package/esm2020/lib/tokens/index.mjs +2 -0
- package/esm2020/lib/utils/auth-utils.mjs +42 -0
- package/esm2020/lib/utils/check-access-token.mjs +11 -0
- package/esm2020/lib/utils/clear-o-auth-storage.mjs +19 -0
- package/esm2020/lib/utils/index.mjs +6 -0
- package/esm2020/lib/utils/oauth-storage.mjs +2 -0
- package/esm2020/lib/utils/storage.factory.mjs +5 -0
- package/esm2020/public-api.mjs +10 -0
- package/fesm2015/abp-ng.oauth.mjs +469 -0
- package/fesm2015/abp-ng.oauth.mjs.map +1 -0
- package/fesm2020/abp-ng.oauth.mjs +451 -0
- package/fesm2020/abp-ng.oauth.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/guards/index.d.ts +1 -0
- package/lib/guards/oauth.guard.d.ts +13 -0
- package/lib/handlers/index.d.ts +1 -0
- package/lib/handlers/oauth-configuration.handler.d.ts +12 -0
- package/lib/interceptors/api.interceptor.d.ts +15 -0
- package/lib/interceptors/index.d.ts +1 -0
- package/lib/oauth.module.d.ts +10 -0
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/navigate-to-manage-profile.provider.d.ts +2 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/oauth.service.d.ts +20 -0
- package/lib/strategies/auth-code-flow-strategy.d.ts +11 -0
- package/lib/strategies/auth-flow-strategy.d.ts +25 -0
- package/lib/strategies/auth-password-flow-strategy.d.ts +184 -0
- package/lib/strategies/index.d.ts +3 -0
- package/lib/tokens/auth-flow-strategy.d.ts +7 -0
- package/lib/tokens/index.d.ts +1 -0
- package/lib/utils/auth-utils.d.ts +6 -0
- package/lib/utils/check-access-token.d.ts +2 -0
- package/lib/utils/clear-o-auth-storage.d.ts +2 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/oauth-storage.d.ts +1 -0
- package/lib/utils/storage.factory.d.ts +2 -0
- package/package.json +40 -0
- package/public-api.d.ts +9 -0
package/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLm9hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2FicC1uZy5vYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './oauth.guard';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2d1YXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb2F1dGguZ3VhcmQnO1xyXG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { OAuthService } from 'angular-oauth2-oidc';
|
|
3
|
+
import { AuthService } from '@abp/ng.core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "angular-oauth2-oidc";
|
|
6
|
+
import * as i2 from "@abp/ng.core";
|
|
7
|
+
export class AbpOAuthGuard {
|
|
8
|
+
constructor(oauthService, authService) {
|
|
9
|
+
this.oauthService = oauthService;
|
|
10
|
+
this.authService = authService;
|
|
11
|
+
}
|
|
12
|
+
canActivate() {
|
|
13
|
+
const hasValidAccessToken = this.oauthService.hasValidAccessToken();
|
|
14
|
+
if (hasValidAccessToken) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
this.authService.navigateToLogin();
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
AbpOAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthGuard, deps: [{ token: i1.OAuthService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
AbpOAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthGuard, decorators: [{
|
|
24
|
+
type: Injectable,
|
|
25
|
+
args: [{
|
|
26
|
+
providedIn: 'root',
|
|
27
|
+
}]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.AuthService }]; } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2d1YXJkcy9vYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFjLE1BQU0sY0FBYyxDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQW9CLFlBQTBCLEVBQVUsV0FBd0I7UUFBNUQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFcEYsV0FBVztRQUNULE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BFLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzswR0FYVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBJQXV0aEd1YXJkIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBPQXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIElBdXRoR3VhcmQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7fVxyXG5cclxuICBjYW5BY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgY29uc3QgaGFzVmFsaWRBY2Nlc3NUb2tlbiA9IHRoaXMub2F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcclxuICAgIGlmIChoYXNWYWxpZEFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubmF2aWdhdGVUb0xvZ2luKCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './oauth-configuration.handler';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2hhbmRsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29hdXRoLWNvbmZpZ3VyYXRpb24uaGFuZGxlcic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
export 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
|
+
}
|
|
25
|
+
OAuthConfigurationHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthConfigurationHandler, deps: [{ token: i1.OAuthService }, { token: i2.EnvironmentService }, { token: CORE_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
OAuthConfigurationHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{
|
|
28
|
+
type: Injectable,
|
|
29
|
+
args: [{
|
|
30
|
+
providedIn: 'root',
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.EnvironmentService }, { type: undefined, decorators: [{
|
|
33
|
+
type: Inject,
|
|
34
|
+
args: [CORE_OPTIONS]
|
|
35
|
+
}] }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtY29uZmlndXJhdGlvbi5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9oYW5kbGVycy9vYXV0aC1jb25maWd1cmF0aW9uLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBTyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLckUsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUNVLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUNoQixPQUFpQjtRQUZ2QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFFL0MsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsa0JBQWtCO2FBQ3BCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ3BDLElBQUksQ0FDSCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN6RTthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3NIQW5CVSx5QkFBeUIsZ0ZBSTFCLFlBQVk7MEhBSlgseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQUJQLCBFbnZpcm9ubWVudFNlcnZpY2UsIENPUkVfT1BUSU9OUyB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgT0F1dGhDb25maWd1cmF0aW9uSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIEBJbmplY3QoQ09SRV9PUFRJT05TKSBwcml2YXRlIG9wdGlvbnM6IEFCUC5Sb290LFxyXG4gICkge1xyXG4gICAgdGhpcy5saXN0ZW5Ub1NldEVudmlyb25tZW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlblRvU2V0RW52aXJvbm1lbnQoKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50U2VydmljZVxyXG4gICAgICAuY3JlYXRlT25VcGRhdGVTdHJlYW0oc3RhdGUgPT4gc3RhdGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChlbnZpcm9ubWVudCA9PiBlbnZpcm9ubWVudC5vQXV0aENvbmZpZyksXHJcbiAgICAgICAgZmlsdGVyKGNvbmZpZyA9PiAhY29tcGFyZShjb25maWcsIHRoaXMub3B0aW9ucy5lbnZpcm9ubWVudC5vQXV0aENvbmZpZykpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoY29uZmlnID0+IHtcclxuICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5jb25maWd1cmUoY29uZmlnKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { OAuthService } from 'angular-oauth2-oidc';
|
|
3
|
+
import { finalize } from 'rxjs/operators';
|
|
4
|
+
import { SessionStateService, HttpWaitService, 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
|
+
export 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
|
+
return next
|
|
18
|
+
.handle(request.clone({
|
|
19
|
+
setHeaders: this.getAdditionalHeaders(request.headers),
|
|
20
|
+
}))
|
|
21
|
+
.pipe(finalize(() => this.httpWaitService.deleteRequest(request)));
|
|
22
|
+
}
|
|
23
|
+
getAdditionalHeaders(existingHeaders) {
|
|
24
|
+
const headers = {};
|
|
25
|
+
const token = this.oAuthService.getAccessToken();
|
|
26
|
+
if (!existingHeaders?.has('Authorization') && token) {
|
|
27
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
28
|
+
}
|
|
29
|
+
const lang = this.sessionState.getLanguage();
|
|
30
|
+
if (!existingHeaders?.has('Accept-Language') && lang) {
|
|
31
|
+
headers['Accept-Language'] = lang;
|
|
32
|
+
}
|
|
33
|
+
const tenant = this.sessionState.getTenant();
|
|
34
|
+
if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {
|
|
35
|
+
headers[this.tenantKey] = tenant.id;
|
|
36
|
+
}
|
|
37
|
+
headers['X-Requested-With'] = 'XMLHttpRequest';
|
|
38
|
+
return headers;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
OAuthApiInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthApiInterceptor, deps: [{ token: i1.OAuthService }, { token: i2.SessionStateService }, { token: i2.HttpWaitService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
42
|
+
OAuthApiInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' });
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthApiInterceptor, decorators: [{
|
|
44
|
+
type: Injectable,
|
|
45
|
+
args: [{
|
|
46
|
+
providedIn: 'root',
|
|
47
|
+
}]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.SessionStateService }, { type: i2.HttpWaitService }, { type: undefined, decorators: [{
|
|
49
|
+
type: Inject,
|
|
50
|
+
args: [TENANT_KEY]
|
|
51
|
+
}] }]; } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXBpLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQW1CLE1BQU0sY0FBYyxDQUFDOzs7O0FBS2pHLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDVSxZQUEwQixFQUMxQixZQUFpQyxFQUNqQyxlQUFnQyxFQUNaLFNBQWlCO1FBSHJDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQzVDLENBQUM7SUFFSixTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUk7YUFDUixNQUFNLENBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNaLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUN2RCxDQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsZUFBNkI7UUFDaEQsTUFBTSxPQUFPLEdBQUcsRUFBUyxDQUFDO1FBRTFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSyxFQUFFO1lBQ25ELE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxVQUFVLEtBQUssRUFBRSxDQUFDO1NBQzlDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNwRCxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBRS9DLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O2dIQXhDVSxtQkFBbUIsZ0hBS3BCLFVBQVU7b0hBTFQsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhhbmRsZXIsIEh0dHBIZWFkZXJzLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSwgSHR0cFdhaXRTZXJ2aWNlLCBURU5BTlRfS0VZLCBJQXBpSW50ZXJjZXB0b3IgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9BdXRoQXBpSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBJQXBpSW50ZXJjZXB0b3Ige1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwV2FpdFNlcnZpY2U6IEh0dHBXYWl0U2VydmljZSxcclxuICAgIEBJbmplY3QoVEVOQU5UX0tFWSkgcHJpdmF0ZSB0ZW5hbnRLZXk6IHN0cmluZyxcclxuICApIHt9XHJcblxyXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG4gICAgdGhpcy5odHRwV2FpdFNlcnZpY2UuYWRkUmVxdWVzdChyZXF1ZXN0KTtcclxuICAgIHJldHVybiBuZXh0XHJcbiAgICAgIC5oYW5kbGUoXHJcbiAgICAgICAgcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgICBzZXRIZWFkZXJzOiB0aGlzLmdldEFkZGl0aW9uYWxIZWFkZXJzKHJlcXVlc3QuaGVhZGVycyksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5odHRwV2FpdFNlcnZpY2UuZGVsZXRlUmVxdWVzdChyZXF1ZXN0KSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkaXRpb25hbEhlYWRlcnMoZXhpc3RpbmdIZWFkZXJzPzogSHR0cEhlYWRlcnMpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB7fSBhcyBhbnk7XHJcblxyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xyXG4gICAgaWYgKCFleGlzdGluZ0hlYWRlcnM/LmhhcygnQXV0aG9yaXphdGlvbicpICYmIHRva2VuKSB7XHJcbiAgICAgIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gICAgaWYgKCFleGlzdGluZ0hlYWRlcnM/LmhhcygnQWNjZXB0LUxhbmd1YWdlJykgJiYgbGFuZykge1xyXG4gICAgICBoZWFkZXJzWydBY2NlcHQtTGFuZ3VhZ2UnXSA9IGxhbmc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGVuYW50ID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0VGVuYW50KCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSGVhZGVycz8uaGFzKHRoaXMudGVuYW50S2V5KSAmJiB0ZW5hbnQ/LmlkKSB7XHJcbiAgICAgIGhlYWRlcnNbdGhpcy50ZW5hbnRLZXldID0gdGVuYW50LmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlcnNbJ1gtUmVxdWVzdGVkLVdpdGgnXSA9ICdYTUxIdHRwUmVxdWVzdCc7XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './api.interceptor';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2ludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcGkuaW50ZXJjZXB0b3InO1xyXG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
|
|
4
|
+
import { ApiInterceptor, AuthGuard, AuthService, CHECK_AUTHENTICATION_STATE_FN_KEY, noop, PIPE_TO_LOGIN_FN_KEY, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, } from '@abp/ng.core';
|
|
5
|
+
import { storageFactory } from './utils/storage.factory';
|
|
6
|
+
import { AbpOAuthService } from './services';
|
|
7
|
+
import { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';
|
|
8
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
9
|
+
import { OAuthApiInterceptor } from './interceptors/api.interceptor';
|
|
10
|
+
import { AbpOAuthGuard } from './guards/oauth.guard';
|
|
11
|
+
import { NavigateToManageProfileProvider } from './providers';
|
|
12
|
+
import { checkAccessToken, pipeToLogin, setTokenResponseToStorage } from './utils';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export class AbpOAuthModule {
|
|
15
|
+
static forRoot() {
|
|
16
|
+
return {
|
|
17
|
+
ngModule: AbpOAuthModule,
|
|
18
|
+
providers: [
|
|
19
|
+
{
|
|
20
|
+
provide: AuthService,
|
|
21
|
+
useClass: AbpOAuthService,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
provide: AuthGuard,
|
|
25
|
+
useClass: AbpOAuthGuard,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
provide: ApiInterceptor,
|
|
29
|
+
useClass: OAuthApiInterceptor,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
provide: PIPE_TO_LOGIN_FN_KEY,
|
|
33
|
+
useValue: pipeToLogin,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
provide: SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY,
|
|
37
|
+
useValue: setTokenResponseToStorage,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
provide: CHECK_AUTHENTICATION_STATE_FN_KEY,
|
|
41
|
+
useValue: checkAccessToken,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
provide: HTTP_INTERCEPTORS,
|
|
45
|
+
useExisting: ApiInterceptor,
|
|
46
|
+
multi: true,
|
|
47
|
+
},
|
|
48
|
+
NavigateToManageProfileProvider,
|
|
49
|
+
{
|
|
50
|
+
provide: APP_INITIALIZER,
|
|
51
|
+
multi: true,
|
|
52
|
+
deps: [OAuthConfigurationHandler],
|
|
53
|
+
useFactory: noop,
|
|
54
|
+
},
|
|
55
|
+
OAuthModule.forRoot().providers,
|
|
56
|
+
{ provide: OAuthStorage, useFactory: storageFactory },
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
AbpOAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
62
|
+
AbpOAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] });
|
|
63
|
+
AbpOAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] });
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, decorators: [{
|
|
65
|
+
type: NgModule,
|
|
66
|
+
args: [{
|
|
67
|
+
imports: [CommonModule, OAuthModule],
|
|
68
|
+
}]
|
|
69
|
+
}] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9vYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBaUMsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsU0FBUyxFQUNULFdBQVcsRUFDWCxpQ0FBaUMsRUFDakMsSUFBSSxFQUNKLG9CQUFvQixFQUNwQixvQ0FBb0MsR0FDckMsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUtuRixNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLFFBQVEsRUFBRSxlQUFlO2lCQUMxQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsU0FBUztvQkFDbEIsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxjQUFjO29CQUN2QixRQUFRLEVBQUUsbUJBQW1CO2lCQUM5QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixRQUFRLEVBQUUsV0FBVztpQkFDdEI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLG9DQUFvQztvQkFDN0MsUUFBUSxFQUFFLHlCQUF5QjtpQkFDcEM7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGlDQUFpQztvQkFDMUMsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLGNBQWM7b0JBQzNCLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNELCtCQUErQjtnQkFDL0I7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0JBQ0QsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVM7Z0JBQy9CLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFO2FBQ3REO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzJHQTdDVSxjQUFjOzRHQUFkLGNBQWMsWUFGZixZQUFZLEVBQUUsV0FBVzs0R0FFeEIsY0FBYyxZQUZmLFlBQVksRUFBRSxXQUFXOzJGQUV4QixjQUFjO2tCQUgxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgT0F1dGhNb2R1bGUsIE9BdXRoU3RvcmFnZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQge1xyXG4gIEFwaUludGVyY2VwdG9yLFxyXG4gIEF1dGhHdWFyZCxcclxuICBBdXRoU2VydmljZSxcclxuICBDSEVDS19BVVRIRU5USUNBVElPTl9TVEFURV9GTl9LRVksXHJcbiAgbm9vcCxcclxuICBQSVBFX1RPX0xPR0lOX0ZOX0tFWSxcclxuICBTRVRfVE9LRU5fUkVTUE9OU0VfVE9fU1RPUkFHRV9GTl9LRVksXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgc3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuL3V0aWxzL3N0b3JhZ2UuZmFjdG9yeSc7XHJcbmltcG9ydCB7IEFicE9BdXRoU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBPQXV0aENvbmZpZ3VyYXRpb25IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVycy9vYXV0aC1jb25maWd1cmF0aW9uLmhhbmRsZXInO1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT0F1dGhBcGlJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IEFicE9BdXRoR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vYXV0aC5ndWFyZCc7XHJcbmltcG9ydCB7IE5hdmlnYXRlVG9NYW5hZ2VQcm9maWxlUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycyc7XHJcbmltcG9ydCB7IGNoZWNrQWNjZXNzVG9rZW4sIHBpcGVUb0xvZ2luLCBzZXRUb2tlblJlc3BvbnNlVG9TdG9yYWdlIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE9BdXRoTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFicE9BdXRoTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFicE9BdXRoTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQWJwT0F1dGhNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEF1dGhTZXJ2aWNlLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6IEFicE9BdXRoU2VydmljZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEF1dGhHdWFyZCxcclxuICAgICAgICAgIHVzZUNsYXNzOiBBYnBPQXV0aEd1YXJkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogQXBpSW50ZXJjZXB0b3IsXHJcbiAgICAgICAgICB1c2VDbGFzczogT0F1dGhBcGlJbnRlcmNlcHRvcixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IFBJUEVfVE9fTE9HSU5fRk5fS0VZLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IHBpcGVUb0xvZ2luLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogU0VUX1RPS0VOX1JFU1BPTlNFX1RPX1NUT1JBR0VfRk5fS0VZLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IHNldFRva2VuUmVzcG9uc2VUb1N0b3JhZ2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBDSEVDS19BVVRIRU5USUNBVElPTl9TVEFURV9GTl9LRVksXHJcbiAgICAgICAgICB1c2VWYWx1ZTogY2hlY2tBY2Nlc3NUb2tlbixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgdXNlRXhpc3Rpbmc6IEFwaUludGVyY2VwdG9yLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBOYXZpZ2F0ZVRvTWFuYWdlUHJvZmlsZVByb3ZpZGVyLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgZGVwczogW09BdXRoQ29uZmlndXJhdGlvbkhhbmRsZXJdLFxyXG4gICAgICAgICAgdXNlRmFjdG9yeTogbm9vcCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKS5wcm92aWRlcnMsXHJcbiAgICAgICAgeyBwcm92aWRlOiBPQXV0aFN0b3JhZ2UsIHVzZUZhY3Rvcnk6IHN0b3JhZ2VGYWN0b3J5IH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './navigate-to-manage-profile.provider';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0ZS10by1tYW5hZ2UtcHJvZmlsZS5wcm92aWRlcic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
window.open(`${env.oAuthConfig.issuer}/Account/Manage?returnUrl=${window.location.href}`, '_self');
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGUtdG8tbWFuYWdlLXByb2ZpbGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Byb3ZpZGVycy9uYXZpZ2F0ZS10by1tYW5hZ2UtcHJvZmlsZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBYTtJQUN2RCxPQUFPLEVBQUUsMEJBQTBCO0lBQ25DLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDZixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvQyxPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPO2FBQ1I7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUNULEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLDZCQUE2QixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUM1RSxPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UsIE5BVklHQVRFX1RPX01BTkFHRV9QUk9GSUxFIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvTWFuYWdlUHJvZmlsZVByb3ZpZGVyOiBQcm92aWRlciA9IHtcclxuICBwcm92aWRlOiBOQVZJR0FURV9UT19NQU5BR0VfUFJPRklMRSxcclxuICB1c2VGYWN0b3J5OiAoKSA9PiB7XHJcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGluamVjdChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVudiA9IGVudmlyb25tZW50LmdldEVudmlyb25tZW50KCk7XHJcbiAgICAgIGlmICghZW52Lm9BdXRoQ29uZmlnKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdUaGUgb0F1dGhDb25maWcgZW52IGlzIG1pc3Npbmcgb24gZW52aXJvbm1lbnQudHMnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgd2luZG93Lm9wZW4oXHJcbiAgICAgICAgYCR7ZW52Lm9BdXRoQ29uZmlnLmlzc3Vlcn0vQWNjb3VudC9NYW5hZ2U/cmV0dXJuVXJsPSR7d2luZG93LmxvY2F0aW9uLmhyZWZ9YCxcclxuICAgICAgICAnX3NlbGYnLFxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './oauth.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xyXG4iXX0=
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
import * as i1 from "angular-oauth2-oidc";
|
|
9
|
+
export class AbpOAuthService {
|
|
10
|
+
constructor(injector, oAuthService) {
|
|
11
|
+
this.injector = injector;
|
|
12
|
+
this.oAuthService = oAuthService;
|
|
13
|
+
}
|
|
14
|
+
get isInternalAuth() {
|
|
15
|
+
return this.strategy.isInternalAuth;
|
|
16
|
+
}
|
|
17
|
+
async init() {
|
|
18
|
+
const environmentService = this.injector.get(EnvironmentService);
|
|
19
|
+
const result$ = environmentService.getEnvironment$().pipe(map(env => env?.oAuthConfig), filter(oAuthConfig => !!oAuthConfig), tap(oAuthConfig => {
|
|
20
|
+
this.strategy =
|
|
21
|
+
oAuthConfig.responseType === 'code'
|
|
22
|
+
? AUTH_FLOW_STRATEGY.Code(this.injector)
|
|
23
|
+
: AUTH_FLOW_STRATEGY.Password(this.injector);
|
|
24
|
+
}), switchMap(() => from(this.strategy.init())), take(1));
|
|
25
|
+
return await lastValueFrom(result$);
|
|
26
|
+
}
|
|
27
|
+
logout(queryParams) {
|
|
28
|
+
return this.strategy.logout(queryParams);
|
|
29
|
+
}
|
|
30
|
+
navigateToLogin(queryParams) {
|
|
31
|
+
this.strategy.navigateToLogin(queryParams);
|
|
32
|
+
}
|
|
33
|
+
login(params) {
|
|
34
|
+
return this.strategy.login(params);
|
|
35
|
+
}
|
|
36
|
+
get isAuthenticated() {
|
|
37
|
+
return this.oAuthService.hasValidAccessToken();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
AbpOAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthService, deps: [{ token: i0.Injector }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
AbpOAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthService, providedIn: 'root' });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthService, decorators: [{
|
|
43
|
+
type: Injectable,
|
|
44
|
+
args: [{
|
|
45
|
+
providedIn: 'root',
|
|
46
|
+
}]
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.OAuthService }]; } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvc2VydmljZXMvb2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUtuRCxNQUFNLE9BQU8sZUFBZTtJQU8xQixZQUFzQixRQUFrQixFQUFVLFlBQTBCO1FBQXRELGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUFHLENBQUM7SUFKaEYsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7SUFDdEMsQ0FBQztJQUlELEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FDdkQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUM1QixNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQ3BDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUTtnQkFDWCxXQUFXLENBQUMsWUFBWSxLQUFLLE1BQU07b0JBQ2pDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7UUFFRixPQUFPLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQW9CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBbUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7OzRHQTFDVSxlQUFlO2dIQUFmLGVBQWUsY0FGZCxNQUFNOzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElBdXRoU2VydmljZSwgTG9naW5QYXJhbXMgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBBdXRoRmxvd1N0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcyc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEFVVEhfRkxPV19TVFJBVEVHWSB9IGZyb20gJy4uL3Rva2Vucy9hdXRoLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBPQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBJQXV0aFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3RyYXRlZ3k6IEF1dGhGbG93U3RyYXRlZ3k7XHJcblxyXG4gIGdldCBpc0ludGVybmFsQXV0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5LmlzSW50ZXJuYWxBdXRoO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSkge31cclxuXHJcbiAgYXN5bmMgaW5pdCgpIHtcclxuICAgIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50U2VydmljZSk7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0JCA9IGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCQoKS5waXBlKFxyXG4gICAgICBtYXAoZW52ID0+IGVudj8ub0F1dGhDb25maWcpLFxyXG4gICAgICBmaWx0ZXIob0F1dGhDb25maWcgPT4gISFvQXV0aENvbmZpZyksXHJcbiAgICAgIHRhcChvQXV0aENvbmZpZyA9PiB7XHJcbiAgICAgICAgdGhpcy5zdHJhdGVneSA9XHJcbiAgICAgICAgICBvQXV0aENvbmZpZy5yZXNwb25zZVR5cGUgPT09ICdjb2RlJ1xyXG4gICAgICAgICAgICA/IEFVVEhfRkxPV19TVFJBVEVHWS5Db2RlKHRoaXMuaW5qZWN0b3IpXHJcbiAgICAgICAgICAgIDogQVVUSF9GTE9XX1NUUkFURUdZLlBhc3N3b3JkKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IGZyb20odGhpcy5zdHJhdGVneS5pbml0KCkpKSxcclxuICAgICAgdGFrZSgxKSxcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IGxhc3RWYWx1ZUZyb20ocmVzdWx0JCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RyYXRlZ3kubG9nb3V0KHF1ZXJ5UGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Mb2dpbihxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgdGhpcy5zdHJhdGVneS5uYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgbG9naW4ocGFyYW1zOiBMb2dpblBhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RyYXRlZ3kubG9naW4ocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
17
|
+
}
|
|
18
|
+
checkIfInternalAuth(queryParams) {
|
|
19
|
+
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
logout(queryParams) {
|
|
23
|
+
return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));
|
|
24
|
+
}
|
|
25
|
+
login(queryParams) {
|
|
26
|
+
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
27
|
+
return of(null);
|
|
28
|
+
}
|
|
29
|
+
getCultureParams(queryParams) {
|
|
30
|
+
const lang = this.sessionState.getLanguage();
|
|
31
|
+
const culture = { culture: lang, 'ui-culture': lang };
|
|
32
|
+
return { ...(lang && culture), ...queryParams };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3N0cmF0ZWdpZXMvYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZ0JBQWdCO0lBQTFEOztRQUNXLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBZ0NsQyxDQUFDO0lBOUJDLEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxLQUFLO2FBQ1QsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxlQUFlLENBQUMsV0FBb0I7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxXQUFvQjtRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQW9CO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsV0FBb0I7UUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3RELE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhGbG93U3RyYXRlZ3kgfSBmcm9tICcuL2F1dGgtZmxvdy1zdHJhdGVneSc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aENvZGVGbG93U3RyYXRlZ3kgZXh0ZW5kcyBBdXRoRmxvd1N0cmF0ZWd5IHtcclxuICByZWFkb25seSBpc0ludGVybmFsQXV0aCA9IGZhbHNlO1xyXG5cclxuICBhc3luYyBpbml0KCkge1xyXG4gICAgcmV0dXJuIHN1cGVyXHJcbiAgICAgIC5pbml0KClcclxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5vQXV0aFNlcnZpY2UudHJ5TG9naW4oKS5jYXRjaChub29wKSlcclxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5vQXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKHt9LCAnYWNjZXNzX3Rva2VuJykpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0xvZ2luKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkludGVybmFsQXV0aChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuaW5pdENvZGVGbG93KCcnLCB0aGlzLmdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXMpKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvZ291dChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5vQXV0aFNlcnZpY2UucmV2b2tlVG9rZW5BbmRMb2dvdXQodGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSkpO1xyXG4gIH1cclxuXHJcbiAgbG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdygnJywgdGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSk7XHJcbiAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gICAgY29uc3QgY3VsdHVyZSA9IHsgY3VsdHVyZTogbGFuZywgJ3VpLWN1bHR1cmUnOiBsYW5nIH07XHJcbiAgICByZXR1cm4geyAuLi4obGFuZyAmJiBjdWx0dXJlKSwgLi4ucXVlcnlQYXJhbXMgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { OAuthErrorEvent, OAuthService as OAuthService2, } from 'angular-oauth2-oidc';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { filter, switchMap, tap } from 'rxjs/operators';
|
|
4
|
+
import { ConfigStateService, EnvironmentService, HttpErrorReporterService, SessionStateService, TENANT_KEY, } from '@abp/ng.core';
|
|
5
|
+
import { clearOAuthStorage } from '../utils/clear-o-auth-storage';
|
|
6
|
+
import { oAuthStorage } from '../utils/oauth-storage';
|
|
7
|
+
export class AuthFlowStrategy {
|
|
8
|
+
constructor(injector) {
|
|
9
|
+
this.injector = injector;
|
|
10
|
+
this.catchError = err => {
|
|
11
|
+
this.httpErrorReporter.reportError(err);
|
|
12
|
+
return of(null);
|
|
13
|
+
};
|
|
14
|
+
this.httpErrorReporter = injector.get(HttpErrorReporterService);
|
|
15
|
+
this.environment = injector.get(EnvironmentService);
|
|
16
|
+
this.configState = injector.get(ConfigStateService);
|
|
17
|
+
this.oAuthService = injector.get(OAuthService2);
|
|
18
|
+
this.sessionState = injector.get(SessionStateService);
|
|
19
|
+
this.oAuthConfig = this.environment.getEnvironment().oAuthConfig;
|
|
20
|
+
this.tenantKey = injector.get(TENANT_KEY);
|
|
21
|
+
this.listenToOauthErrors();
|
|
22
|
+
}
|
|
23
|
+
async init() {
|
|
24
|
+
const shouldClear = shouldStorageClear(this.environment.getEnvironment().oAuthConfig.clientId, oAuthStorage);
|
|
25
|
+
if (shouldClear)
|
|
26
|
+
clearOAuthStorage(oAuthStorage);
|
|
27
|
+
this.oAuthService.configure(this.oAuthConfig);
|
|
28
|
+
this.oAuthService.events
|
|
29
|
+
.pipe(filter(event => event.type === 'token_refresh_error'))
|
|
30
|
+
.subscribe(() => this.navigateToLogin());
|
|
31
|
+
return this.oAuthService
|
|
32
|
+
.loadDiscoveryDocument()
|
|
33
|
+
.then(() => {
|
|
34
|
+
if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
|
|
35
|
+
return Promise.resolve();
|
|
36
|
+
}
|
|
37
|
+
return this.refreshToken();
|
|
38
|
+
})
|
|
39
|
+
.catch(this.catchError);
|
|
40
|
+
}
|
|
41
|
+
refreshToken() {
|
|
42
|
+
return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());
|
|
43
|
+
}
|
|
44
|
+
listenToOauthErrors() {
|
|
45
|
+
this.oAuthService.events
|
|
46
|
+
.pipe(filter(event => event instanceof OAuthErrorEvent), tap(() => clearOAuthStorage()), switchMap(() => this.configState.refreshAppState()))
|
|
47
|
+
.subscribe();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function shouldStorageClear(clientId, storage) {
|
|
51
|
+
const key = 'abpOAuthClientId';
|
|
52
|
+
if (!storage.getItem(key)) {
|
|
53
|
+
storage.setItem(key, clientId);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const shouldClear = storage.getItem(key) !== clientId;
|
|
57
|
+
if (shouldClear)
|
|
58
|
+
storage.setItem(key, clientId);
|
|
59
|
+
return shouldClear;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBRUwsZUFBZSxFQUNmLFlBQVksSUFBSSxhQUFhLEdBRTlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsTUFBTSxPQUFnQixnQkFBZ0I7SUF3QnBDLFlBQXNCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMaEMsZUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDO1FBR0EsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JB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b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBBdXRoQ29uZmlnLFxyXG4gIE9BdXRoRXJyb3JFdmVudCxcclxuICBPQXV0aFNlcnZpY2UgYXMgT0F1dGhTZXJ2aWNlMixcclxuICBPQXV0aFN0b3JhZ2UsXHJcbn0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgTG9naW5QYXJhbXMsXHJcbiAgQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gIEVudmlyb25tZW50U2VydmljZSxcclxuICBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsXHJcbiAgU2Vzc2lvblN0YXRlU2VydmljZSxcclxuICBURU5BTlRfS0VZLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IGNsZWFyT0F1dGhTdG9yYWdlIH0gZnJvbSAnLi4vdXRpbHMvY2xlYXItby1hdXRoLXN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBvQXV0aFN0b3JhZ2UgfSBmcm9tICcuLi91dGlscy9vYXV0aC1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoRmxvd1N0cmF0ZWd5IHtcclxuICBhYnN0cmFjdCByZWFkb25seSBpc0ludGVybmFsQXV0aDogYm9vbGVhbjtcclxuXHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlMjtcclxuICBwcm90ZWN0ZWQgb0F1dGhDb25maWc6IEF1dGhDb25maWc7XHJcbiAgcHJvdGVjdGVkIHNlc3Npb25TdGF0ZTogU2Vzc2lvblN0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdGVuYW50S2V5OiBzdHJpbmc7XHJcblxyXG4gIGFic3RyYWN0IGNoZWNrSWZJbnRlcm5hbEF1dGgocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBib29sZWFuO1xyXG5cclxuICBhYnN0cmFjdCBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIGFic3RyYWN0IGxvZ2luKHBhcmFtcz86IExvZ2luUGFyYW1zIHwgUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBwcml2YXRlIGNhdGNoRXJyb3IgPSBlcnIgPT4ge1xyXG4gICAgdGhpcy5odHRwRXJyb3JSZXBvcnRlci5yZXBvcnRFcnJvcihlcnIpO1xyXG4gICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIgPSBpbmplY3Rvci5nZXQoSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlKTtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuICAgIHRoaXMuY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9BdXRoU2VydmljZTIpO1xyXG4gICAgdGhpcy5zZXNzaW9uU3RhdGUgPSBpbmplY3Rvci5nZXQoU2Vzc2lvblN0YXRlU2VydmljZSk7XHJcbiAgICB0aGlzLm9BdXRoQ29uZmlnID0gdGhpcy5lbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudCgpLm9BdXRoQ29uZmlnO1xyXG4gICAgdGhpcy50ZW5hbnRLZXkgPSBpbmplY3Rvci5nZXQoVEVOQU5UX0tFWSk7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5Ub09hdXRoRXJyb3JzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0KCk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBzaG91bGRDbGVhciA9IHNob3VsZFN0b3JhZ2VDbGVhcihcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudCgpLm9BdXRoQ29uZmlnLmNsaWVudElkLFxyXG4gICAgICBvQXV0aFN0b3JhZ2UsXHJcbiAgICApO1xyXG4gICAgaWYgKHNob3VsZENsZWFyKSBjbGVhck9BdXRoU3RvcmFnZShvQXV0aFN0b3JhZ2UpO1xyXG5cclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZSh0aGlzLm9BdXRoQ29uZmlnKTtcclxuXHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnR5cGUgPT09ICd0b2tlbl9yZWZyZXNoX2Vycm9yJykpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvTG9naW4oKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlXHJcbiAgICAgIC5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSB8fCAhdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5jYXRjaEVycm9yKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWZyZXNoVG9rZW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKCkuY2F0Y2goKCkgPT4gY2xlYXJPQXV0aFN0b3JhZ2UoKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVG9PYXV0aEVycm9ycygpIHtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmV2ZW50c1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBPQXV0aEVycm9yRXZlbnQpLFxyXG4gICAgICAgIHRhcCgoKSA9PiBjbGVhck9BdXRoU3RvcmFnZSgpKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvdWxkU3RvcmFnZUNsZWFyKGNsaWVudElkOiBzdHJpbmcsIHN0b3JhZ2U6IE9BdXRoU3RvcmFnZSk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IGtleSA9ICdhYnBPQXV0aENsaWVudElkJztcclxuICBpZiAoIXN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XHJcbiAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBjbGllbnRJZCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCBzaG91bGRDbGVhciA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpICE9PSBjbGllbnRJZDtcclxuICBpZiAoc2hvdWxkQ2xlYXIpIHN0b3JhZ2Uuc2V0SXRlbShrZXksIGNsaWVudElkKTtcclxuICByZXR1cm4gc2hvdWxkQ2xlYXI7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { filter, switchMap, tap } from 'rxjs/operators';
|
|
2
|
+
import { OAuthInfoEvent } from 'angular-oauth2-oidc';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { from } from 'rxjs';
|
|
5
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
6
|
+
import { AuthFlowStrategy } from './auth-flow-strategy';
|
|
7
|
+
import { pipeToLogin, removeRememberMe } from '../utils/auth-utils';
|
|
8
|
+
import { clearOAuthStorage } from '../utils/clear-o-auth-storage';
|
|
9
|
+
function getCookieValueByName(name) {
|
|
10
|
+
const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
|
|
11
|
+
return match ? match[2] : '';
|
|
12
|
+
}
|
|
13
|
+
export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.isInternalAuth = true;
|
|
17
|
+
this.cookieKey = 'rememberMe';
|
|
18
|
+
this.storageKey = 'passwordFlow';
|
|
19
|
+
}
|
|
20
|
+
listenToTokenExpiration() {
|
|
21
|
+
this.oAuthService.events
|
|
22
|
+
.pipe(filter(event => event instanceof OAuthInfoEvent &&
|
|
23
|
+
event.type === 'token_expires' &&
|
|
24
|
+
event.info === 'access_token'))
|
|
25
|
+
.subscribe(() => {
|
|
26
|
+
if (this.oAuthService.getRefreshToken()) {
|
|
27
|
+
this.refreshToken();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.oAuthService.logOut();
|
|
31
|
+
removeRememberMe();
|
|
32
|
+
this.configState.refreshAppState().subscribe();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async init() {
|
|
37
|
+
if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {
|
|
38
|
+
this.oAuthService.logOut();
|
|
39
|
+
}
|
|
40
|
+
return super.init().then(() => this.listenToTokenExpiration());
|
|
41
|
+
}
|
|
42
|
+
navigateToLogin(queryParams) {
|
|
43
|
+
const router = this.injector.get(Router);
|
|
44
|
+
return router.navigate(['/account/login'], { queryParams });
|
|
45
|
+
}
|
|
46
|
+
checkIfInternalAuth() {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
login(params) {
|
|
50
|
+
const tenant = this.sessionState.getTenant();
|
|
51
|
+
return from(this.oAuthService.fetchTokenUsingPasswordFlow(params.username, params.password, new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }))).pipe(pipeToLogin(params, this.injector));
|
|
52
|
+
}
|
|
53
|
+
logout(queryParams) {
|
|
54
|
+
const router = this.injector.get(Router);
|
|
55
|
+
return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
|
|
56
|
+
router.navigateByUrl('/');
|
|
57
|
+
removeRememberMe();
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
refreshToken() {
|
|
61
|
+
return this.oAuthService.refreshToken().catch(() => {
|
|
62
|
+
clearOAuthStorage();
|
|
63
|
+
removeRememberMe();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wYXNzd29yZC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQW9CLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWxFLFNBQVMsb0JBQW9CLENBQUMsSUFBWTtJQUN4QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBQTlEOztRQUNXLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxZQUFZLENBQUM7UUFDekIsZUFBVSxHQUFHLGNB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QUNwQixnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT0F1dGhJbmZvRXZlbnQgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBwaXBlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBdXRoRmxvd1N0cmF0ZWd5IH0gZnJvbSAnLi9hdXRoLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBwaXBlVG9Mb2dpbiwgcmVtb3ZlUmVtZW1iZXJNZSwgc2V0UmVtZW1iZXJNZSB9IGZyb20gJy4uL3V0aWxzL2F1dGgtdXRpbHMnO1xyXG5pbXBvcnQgeyBMb2dpblBhcmFtcyB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IGNsZWFyT0F1dGhTdG9yYWdlIH0gZnJvbSAnLi4vdXRpbHMvY2xlYXItby1hdXRoLXN0b3JhZ2UnO1xyXG5cclxuZnVuY3Rpb24gZ2V0Q29va2llVmFsdWVCeU5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICc9KFteO10rKScpKTtcclxuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsyXSA6ICcnO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aFBhc3N3b3JkRmxvd1N0cmF0ZWd5IGV4dGVuZHMgQXV0aEZsb3dTdHJhdGVneSB7XHJcbiAgcmVhZG9ubHkgaXNJbnRlcm5hbEF1dGggPSB0cnVlO1xyXG4gIHByaXZhdGUgY29va2llS2V5ID0gJ3JlbWVtYmVyTWUnO1xyXG4gIHByaXZhdGUgc3RvcmFnZUtleSA9ICdwYXNzd29yZEZsb3cnO1xyXG5cclxuICBwcml2YXRlIGxpc3RlblRvVG9rZW5FeHBpcmF0aW9uKCkge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2ZW50ID0+XHJcbiAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgT0F1dGhJbmZvRXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQudHlwZSA9PT0gJ3Rva2VuX2V4cGlyZXMnICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmluZm8gPT09ICdhY2Nlc3NfdG9rZW4nLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5sb2dPdXQoKTtcclxuICAgICAgICAgIHJlbW92ZVJlbWVtYmVyTWUoKTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXQoKSB7XHJcbiAgICBpZiAoIWdldENvb2tpZVZhbHVlQnlOYW1lKHRoaXMuY29va2llS2V5KSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpKSB7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmxvZ091dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdXBlci5pbml0KCkudGhlbigoKSA9PiB0aGlzLmxpc3RlblRvVG9rZW5FeHBpcmF0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0xvZ2luKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICBjb25zdCByb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xyXG4gICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShbJy9hY2NvdW50L2xvZ2luJ10sIHsgcXVlcnlQYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmSW50ZXJuYWxBdXRoKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2dpbihwYXJhbXM6IExvZ2luUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHRlbmFudCA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldFRlbmFudCgpO1xyXG5cclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5mZXRjaFRva2VuVXNpbmdQYXNzd29yZEZsb3coXHJcbiAgICAgICAgcGFyYW1zLnVzZXJuYW1lLFxyXG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCxcclxuICAgICAgICBuZXcgSHR0cEhlYWRlcnMoeyAuLi4odGVuYW50ICYmIHRlbmFudC5pZCAmJiB7IFt0aGlzLnRlbmFudEtleV06IHRlbmFudC5pZCB9KSB9KSxcclxuICAgICAgKSxcclxuICAgICkucGlwZShwaXBlVG9Mb2dpbihwYXJhbXMsIHRoaXMuaW5qZWN0b3IpKTtcclxuICB9XHJcbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICBjb25zdCByb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMub0F1dGhTZXJ2aWNlLnJldm9rZVRva2VuQW5kTG9nb3V0KHF1ZXJ5UGFyYW1zKSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XHJcbiAgICAgICAgcmVtb3ZlUmVtZW1iZXJNZSgpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IHtcclxuICAgICAgY2xlYXJPQXV0aFN0b3JhZ2UoKTtcclxuICAgICAgcmVtb3ZlUmVtZW1iZXJNZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './auth-flow-strategy';
|
|
2
|
+
export * from './auth-code-flow-strategy';
|
|
3
|
+
export * from './auth-password-flow-strategy';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3N0cmF0ZWdpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGgtZmxvdy1zdHJhdGVneSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3knO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneSc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AuthCodeFlowStrategy } from '../strategies/auth-code-flow-strategy';
|
|
2
|
+
import { AuthPasswordFlowStrategy } from '../strategies/auth-password-flow-strategy';
|
|
3
|
+
export const AUTH_FLOW_STRATEGY = {
|
|
4
|
+
Code(injector) {
|
|
5
|
+
return new AuthCodeFlowStrategy(injector);
|
|
6
|
+
},
|
|
7
|
+
Password(injector) {
|
|
8
|
+
return new AuthPasswordFlowStrategy(injector);
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi90b2tlbnMvYXV0aC1mbG93LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLElBQUksQ0FBQyxRQUFrQjtRQUNyQixPQUFPLElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVEsQ0FBQyxRQUFrQjtRQUN6QixPQUFPLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29kZUZsb3dTdHJhdGVneSB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3kgfSBmcm9tICcuLi9zdHJhdGVnaWVzL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSF9GTE9XX1NUUkFURUdZID0ge1xyXG4gIENvZGUoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICByZXR1cm4gbmV3IEF1dGhDb2RlRmxvd1N0cmF0ZWd5KGluamVjdG9yKTtcclxuICB9LFxyXG4gIFBhc3N3b3JkKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgcmV0dXJuIG5ldyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3koaW5qZWN0b3IpO1xyXG4gIH0sXHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './auth-flow-strategy';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRoLWZsb3ctc3RyYXRlZ3knO1xyXG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { OAuthStorage } from 'angular-oauth2-oidc';
|
|
3
|
+
import { pipe } from 'rxjs';
|
|
4
|
+
import { switchMap, tap } from 'rxjs/operators';
|
|
5
|
+
import { ConfigStateService, } from '@abp/ng.core';
|
|
6
|
+
const cookieKey = 'rememberMe';
|
|
7
|
+
const storageKey = 'passwordFlow';
|
|
8
|
+
export const pipeToLogin = function (params, injector) {
|
|
9
|
+
const configState = injector.get(ConfigStateService);
|
|
10
|
+
const router = injector.get(Router);
|
|
11
|
+
return pipe(switchMap(() => configState.refreshAppState()), tap(() => {
|
|
12
|
+
setRememberMe(params.rememberMe);
|
|
13
|
+
if (params.redirectUrl)
|
|
14
|
+
router.navigate([params.redirectUrl]);
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
export const setTokenResponseToStorage = function (injector, tokenRes) {
|
|
18
|
+
const { access_token, refresh_token, scope: grantedScopes, expires_in } = tokenRes;
|
|
19
|
+
const storage = injector.get(OAuthStorage);
|
|
20
|
+
storage.setItem('access_token', access_token);
|
|
21
|
+
storage.setItem('refresh_token', refresh_token);
|
|
22
|
+
storage.setItem('access_token_stored_at', '' + Date.now());
|
|
23
|
+
if (grantedScopes) {
|
|
24
|
+
storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' ')));
|
|
25
|
+
}
|
|
26
|
+
if (expires_in) {
|
|
27
|
+
const expiresInMilliSeconds = expires_in * 1000;
|
|
28
|
+
const now = new Date();
|
|
29
|
+
const expiresAt = now.getTime() + expiresInMilliSeconds;
|
|
30
|
+
storage.setItem('expires_at', '' + expiresAt);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export function setRememberMe(remember) {
|
|
34
|
+
removeRememberMe();
|
|
35
|
+
localStorage.setItem(storageKey, 'true');
|
|
36
|
+
document.cookie = `${cookieKey}=true; path=/${remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''}`;
|
|
37
|
+
}
|
|
38
|
+
export function removeRememberMe() {
|
|
39
|
+
localStorage.removeItem(storageKey);
|
|
40
|
+
document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvdXRpbHMvYXV0aC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7QUFDL0IsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBa0IsVUFDeEMsTUFBdUQsRUFDdkQsUUFBa0I7SUFFbEIsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEMsT0FBTyxJQUFJLENBQ1QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUM5QyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ1AsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxXQUFXO1lBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBK0MsVUFDbkYsUUFBa0IsRUFDbEIsUUFBdUI7SUFFdkIsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUzQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5QyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLGFBQWEsRUFBRTtRQUNqQixPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDN0U7SUFFRCxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztRQUN4RCxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7S0FDL0M7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsYUFBYSxDQUFDLFFBQWlCO0lBQzdDLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLFNBQVMsZ0JBQzVCLFFBQVEsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUMsQ0FBQyxDQUFDLEVBQ3pELEVBQUUsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLEdBQUcscURBQXFELENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9BdXRoU3RvcmFnZSwgVG9rZW5SZXNwb25zZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBwaXBlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBMb2dpblBhcmFtcyxcclxuICBQaXBlVG9Mb2dpbkZuLFxyXG4gIFNldFRva2VuUmVzcG9uc2VUb1N0b3JhZ2VGbixcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuY29uc3QgY29va2llS2V5ID0gJ3JlbWVtYmVyTWUnO1xyXG5jb25zdCBzdG9yYWdlS2V5ID0gJ3Bhc3N3b3JkRmxvdyc7XHJcblxyXG5leHBvcnQgY29uc3QgcGlwZVRvTG9naW46IFBpcGVUb0xvZ2luRm4gPSBmdW5jdGlvbiAoXHJcbiAgcGFyYW1zOiBQaWNrPExvZ2luUGFyYW1zLCAncmVkaXJlY3RVcmwnIHwgJ3JlbWVtYmVyTWUnPixcclxuICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbikge1xyXG4gIGNvbnN0IGNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcblxyXG4gIHJldHVybiBwaXBlKFxyXG4gICAgc3dpdGNoTWFwKCgpID0+IGNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpKSxcclxuICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgIHNldFJlbWVtYmVyTWUocGFyYW1zLnJlbWVtYmVyTWUpO1xyXG4gICAgICBpZiAocGFyYW1zLnJlZGlyZWN0VXJsKSByb3V0ZXIubmF2aWdhdGUoW3BhcmFtcy5yZWRpcmVjdFVybF0pO1xyXG4gICAgfSksXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZXRUb2tlblJlc3BvbnNlVG9TdG9yYWdlOiBTZXRUb2tlblJlc3BvbnNlVG9TdG9yYWdlRm48VG9rZW5SZXNwb25zZT4gPSBmdW5jdGlvbiAoXHJcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gIHRva2VuUmVzOiBUb2tlblJlc3BvbnNlLFxyXG4pIHtcclxuICBjb25zdCB7IGFjY2Vzc190b2tlbiwgcmVmcmVzaF90b2tlbiwgc2NvcGU6IGdyYW50ZWRTY29wZXMsIGV4cGlyZXNfaW4gfSA9IHRva2VuUmVzO1xyXG4gIGNvbnN0IHN0b3JhZ2UgPSBpbmplY3Rvci5nZXQoT0F1dGhTdG9yYWdlKTtcclxuXHJcbiAgc3RvcmFnZS5zZXRJdGVtKCdhY2Nlc3NfdG9rZW4nLCBhY2Nlc3NfdG9rZW4pO1xyXG4gIHN0b3JhZ2Uuc2V0SXRlbSgncmVmcmVzaF90b2tlbicsIHJlZnJlc2hfdG9rZW4pO1xyXG4gIHN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXNzX3Rva2VuX3N0b3JlZF9hdCcsICcnICsgRGF0ZS5ub3coKSk7XHJcblxyXG4gIGlmIChncmFudGVkU2NvcGVzKSB7XHJcbiAgICBzdG9yYWdlLnNldEl0ZW0oJ2dyYW50ZWRfc2NvcGVzJywgSlNPTi5zdHJpbmdpZnkoZ3JhbnRlZFNjb3Blcy5zcGxpdCgnICcpKSk7XHJcbiAgfVxyXG5cclxuICBpZiAoZXhwaXJlc19pbikge1xyXG4gICAgY29uc3QgZXhwaXJlc0luTWlsbGlTZWNvbmRzID0gZXhwaXJlc19pbiAqIDEwMDA7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZXhwaXJlc0F0ID0gbm93LmdldFRpbWUoKSArIGV4cGlyZXNJbk1pbGxpU2Vjb25kcztcclxuICAgIHN0b3JhZ2Uuc2V0SXRlbSgnZXhwaXJlc19hdCcsICcnICsgZXhwaXJlc0F0KTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtZW1iZXJNZShyZW1lbWJlcjogYm9vbGVhbikge1xyXG4gIHJlbW92ZVJlbWVtYmVyTWUoKTtcclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCAndHJ1ZScpO1xyXG4gIGRvY3VtZW50LmNvb2tpZSA9IGAke2Nvb2tpZUtleX09dHJ1ZTsgcGF0aD0vJHtcclxuICAgIHJlbWVtYmVyID8gJyA7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCcgOiAnJ1xyXG4gIH1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUmVtZW1iZXJNZSgpIHtcclxuICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yYWdlS2V5KTtcclxuICBkb2N1bWVudC5jb29raWUgPSBjb29raWVLZXkgKyAnPSA7IHBhdGg9LzsgZXhwaXJlcyA9IFRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJztcclxufVxyXG4iXX0=
|