@abp/ng.oauth 7.2.2 → 7.3.0-rc.2
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 +127 -4
- 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 +22 -14
- 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
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUVMLGVBQWUsRUFDZixZQUFZLElBQUksYUFBYSxHQUU5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBRXhCLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3RELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBdUJwQyxZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTGhDLGVBQVUsR0FBRyxDQUFDLEdBQXNCLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQUdBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQzdCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2hGLElBQUksV0FBVztnQkFBRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNsRDtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07YUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsQ0FBQzthQUMzRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0IsT0FBTyxJQUFJLENBQUMsWUFBWTthQUNyQixxQkFBcUIsRUFBRTthQUN2QixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUNuRixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUMxQjtZQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVTLHFCQUFxQjtRQUM3QixNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2lCQUNyQixJQUFJLENBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFDN0UsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFakUsSUFBSSxZQUFZLElBQUksWUFBWSxLQUFLLEdBQUcsRUFBRTtvQkFDeEMsT0FBTyxZQUFZLENBQUM7aUJBQ3JCO2dCQUNELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsRUFDdkMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUMvQyxDQUNGLENBQ0Y7aUJBQ0EsU0FBUyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTthQUNyQixJQUFJLENBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsQ0FBQyxFQUNqRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUNwRDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxPQUFxQjtJQUNqRSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDdEQsSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBBdXRoQ29uZmlnLFxyXG4gIE9BdXRoRXJyb3JFdmVudCxcclxuICBPQXV0aFNlcnZpY2UgYXMgT0F1dGhTZXJ2aWNlMixcclxuICBPQXV0aFN0b3JhZ2UsXHJcbn0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlLFxyXG4gIExvZ2luUGFyYW1zLFxyXG4gIFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbiAgVEVOQU5UX0tFWSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBjbGVhck9BdXRoU3RvcmFnZSB9IGZyb20gJy4uL3V0aWxzL2NsZWFyLW8tYXV0aC1zdG9yYWdlJztcclxuaW1wb3J0IHsgb0F1dGhTdG9yYWdlIH0gZnJvbSAnLi4vdXRpbHMvb2F1dGgtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoOiBib29sZWFuO1xyXG5cclxuICBwcm90ZWN0ZWQgaHR0cEVycm9yUmVwb3J0ZXI6IEh0dHBFcnJvclJlcG9ydGVyU2VydmljZTtcclxuICBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50U2VydmljZTtcclxuICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UyO1xyXG4gIHByb3RlY3RlZCBvQXV0aENvbmZpZyE6IEF1dGhDb25maWc7XHJcbiAgcHJvdGVjdGVkIHNlc3Npb25TdGF0ZTogU2Vzc2lvblN0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogQWJwTG9jYWxTdG9yYWdlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdGVuYW50S2V5OiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xyXG5cclxuICBhYnN0cmFjdCBjaGVja0lmSW50ZXJuYWxBdXRoKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogYm9vbGVhbjtcclxuICBhYnN0cmFjdCBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkO1xyXG4gIGFic3RyYWN0IGxvZ291dChxdWVyeVBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8YW55PjtcclxuICBhYnN0cmFjdCBsb2dpbihwYXJhbXM/OiBMb2dpblBhcmFtcyB8IFBhcmFtcyk6IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBjYXRjaEVycm9yID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0RXJyb3IoZXJyKTtcclxuICAgIHJldHVybiBvZihudWxsKTtcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyID0gaW5qZWN0b3IuZ2V0KEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSk7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50U2VydmljZSk7XHJcbiAgICB0aGlzLmNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZSA9IGluamVjdG9yLmdldChPQXV0aFNlcnZpY2UyKTtcclxuICAgIHRoaXMuc2Vzc2lvblN0YXRlID0gaW5qZWN0b3IuZ2V0KFNlc3Npb25TdGF0ZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFicExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5vQXV0aENvbmZpZyA9IHRoaXMuZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKS5vQXV0aENvbmZpZyB8fCB7fTtcclxuICAgIHRoaXMudGVuYW50S2V5ID0gaW5qZWN0b3IuZ2V0KFRFTkFOVF9LRVkpO1xyXG4gICAgdGhpcy5yb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcclxuXHJcbiAgICB0aGlzLmxpc3RlblRvT2F1dGhFcnJvcnMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLm9BdXRoQ29uZmlnLmNsaWVudElkKSB7XHJcbiAgICAgIGNvbnN0IHNob3VsZENsZWFyID0gc2hvdWxkU3RvcmFnZUNsZWFyKHRoaXMub0F1dGhDb25maWcuY2xpZW50SWQsIG9BdXRoU3RvcmFnZSk7XHJcbiAgICAgIGlmIChzaG91bGRDbGVhcikgY2xlYXJPQXV0aFN0b3JhZ2Uob0F1dGhTdG9yYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5vQXV0aENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVmcmVzaF9lcnJvcicpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG5cclxuICAgIHRoaXMubmF2aWdhdGVUb1ByZXZpb3VzVXJsKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlXHJcbiAgICAgIC5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSB8fCAhdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5jYXRjaEVycm9yKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZVRvUHJldmlvdXNVcmwoKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHJlc3BvbnNlVHlwZSB9ID0gdGhpcy5vQXV0aENvbmZpZztcclxuICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICdjb2RlJykge1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVjZWl2ZWQnICYmICEhdGhpcy5vQXV0aFNlcnZpY2Uuc3RhdGUpLFxyXG4gICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0X3VyaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLm9BdXRoU2VydmljZS5zdGF0ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVkaXJlY3RfdXJpICYmIHJlZGlyZWN0X3VyaSAhPT0gJy8nKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0X3VyaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gJy8nO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAocmVkaXJlY3RVcmkgPT5cclxuICAgICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUkKCdjdXJyZW50VXNlcicpLnBpcGUoXHJcbiAgICAgICAgICAgICAgZmlsdGVyKHVzZXIgPT4gISF1c2VyPy5pc0F1dGhlbnRpY2F0ZWQpLFxyXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RVcmldKSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvT2F1dGhFcnJvcnMoKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcclxuICAgICAgICB0YXAoKCkgPT4gY2xlYXJPQXV0aFN0b3JhZ2UoKSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3VsZFN0b3JhZ2VDbGVhcihjbGllbnRJZDogc3RyaW5nLCBzdG9yYWdlOiBPQXV0aFN0b3JhZ2UpOiBib29sZWFuIHtcclxuICBjb25zdCBrZXkgPSAnYWJwT0F1dGhDbGllbnRJZCc7XHJcbiAgaWYgKCFzdG9yYWdlLmdldEl0ZW0oa2V5KSkge1xyXG4gICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgY2xpZW50SWQpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgc2hvdWxkQ2xlYXIgPSBzdG9yYWdlLmdldEl0ZW0oa2V5KSAhPT0gY2xpZW50SWQ7XHJcbiAgaWYgKHNob3VsZENsZWFyKSBzdG9yYWdlLnNldEl0ZW0oa2V5LCBjbGllbnRJZCk7XHJcbiAgcmV0dXJuIHNob3VsZENsZWFyO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,67 +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(this.localStorageService);
|
|
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(this.localStorageService);
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
refreshToken() {
|
|
61
|
-
return this.oAuthService.refreshToken().catch(() => {
|
|
62
|
-
clearOAuthStorage();
|
|
63
|
-
removeRememberMe(this.localStorageService);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
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(this.localStorageService);
|
|
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(this.localStorageService);
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
refreshToken() {
|
|
61
|
+
return this.oAuthService.refreshToken().catch(() => {
|
|
62
|
+
clearOAuthStorage();
|
|
63
|
+
removeRememberMe(this.localStorageService);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
67
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wYXNzd29yZC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQW9CLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbEUsU0FBUyxvQkFBb0IsQ0FBQyxJQUFZO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM3RSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFBOUQ7O1FBQ1csbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFHLFlBQVksQ0FBQztRQUN6QixlQUFVLEdBQUcsY0FB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QUFLLENBQUMsR0FBRyxFQUFFO1lBQ2pELGlCQUFpQixFQUFFLENBQUM7WUFDcEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPQXV0aEluZm9FdmVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHBpcGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEF1dGhGbG93U3RyYXRlZ3kgfSBmcm9tICcuL2F1dGgtZmxvdy1zdHJhdGVneSc7XHJcbmltcG9ydCB7IHBpcGVUb0xvZ2luLCByZW1vdmVSZW1lbWJlck1lIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscyc7XHJcbmltcG9ydCB7IExvZ2luUGFyYW1zIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgY2xlYXJPQXV0aFN0b3JhZ2UgfSBmcm9tICcuLi91dGlscy9jbGVhci1vLWF1dGgtc3RvcmFnZSc7XHJcblxyXG5mdW5jdGlvbiBnZXRDb29raWVWYWx1ZUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnwgKScgKyBuYW1lICsgJz0oW147XSspJykpO1xyXG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzJdIDogJyc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3kgZXh0ZW5kcyBBdXRoRmxvd1N0cmF0ZWd5IHtcclxuICByZWFkb25seSBpc0ludGVybmFsQXV0aCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBjb29raWVLZXkgPSAncmVtZW1iZXJNZSc7XHJcbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gJ3Bhc3N3b3JkRmxvdyc7XHJcblxyXG4gIHByaXZhdGUgbGlzdGVuVG9Ub2tlbkV4cGlyYXRpb24oKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgZXZlbnQgPT5cclxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBPQXV0aEluZm9FdmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC50eXBlID09PSAndG9rZW5fZXhwaXJlcycgJiZcclxuICAgICAgICAgICAgZXZlbnQuaW5mbyA9PT0gJ2FjY2Vzc190b2tlbicsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmxvZ091dCgpO1xyXG4gICAgICAgICAgcmVtb3ZlUmVtZW1iZXJNZSh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdCgpIHtcclxuICAgIGlmICghZ2V0Q29va2llVmFsdWVCeU5hbWUodGhpcy5jb29raWVLZXkpICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSkpIHtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UubG9nT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1cGVyLmluaXQoKS50aGVuKCgpID0+IHRoaXMubGlzdGVuVG9Ub2tlbkV4cGlyYXRpb24oKSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcbiAgICByZXR1cm4gcm91dGVyLm5hdmlnYXRlKFsnL2FjY291bnQvbG9naW4nXSwgeyBxdWVyeVBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZJbnRlcm5hbEF1dGgoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvZ2luKHBhcmFtczogTG9naW5QYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdGVuYW50ID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0VGVuYW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmZldGNoVG9rZW5Vc2luZ1Bhc3N3b3JkRmxvdyhcclxuICAgICAgICBwYXJhbXMudXNlcm5hbWUsXHJcbiAgICAgICAgcGFyYW1zLnBhc3N3b3JkLFxyXG4gICAgICAgIG5ldyBIdHRwSGVhZGVycyh7IC4uLih0ZW5hbnQgJiYgdGVuYW50LmlkICYmIHsgW3RoaXMudGVuYW50S2V5XTogdGVuYW50LmlkIH0pIH0pLFxyXG4gICAgICApLFxyXG4gICAgKS5waXBlKHBpcGVUb0xvZ2luKHBhcmFtcywgdGhpcy5pbmplY3RvcikpO1xyXG4gIH1cclxuICBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5vQXV0aFNlcnZpY2UucmV2b2tlVG9rZW5BbmRMb2dvdXQocXVlcnlQYXJhbXMpKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcclxuICAgICAgICByZW1vdmVSZW1lbWJlck1lKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWZyZXNoVG9rZW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKCkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICBjbGVhck9BdXRoU3RvcmFnZSgpO1xyXG4gICAgICByZW1vdmVSZW1lbWJlck1lKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './auth-flow-strategy';
|
|
2
|
-
export * from './auth-code-flow-strategy';
|
|
3
|
-
export * from './auth-password-flow-strategy';
|
|
1
|
+
export * from './auth-flow-strategy';
|
|
2
|
+
export * from './auth-code-flow-strategy';
|
|
3
|
+
export * from './auth-password-flow-strategy';
|
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3N0cmF0ZWdpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGgtZmxvdy1zdHJhdGVneSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3knO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneSc7XHJcbiJdfQ==
|
|
@@ -1,11 +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
|
-
};
|
|
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
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi90b2tlbnMvYXV0aC1mbG93LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLElBQUksQ0FBQyxRQUFrQjtRQUNyQixPQUFPLElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVEsQ0FBQyxRQUFrQjtRQUN6QixPQUFPLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29kZUZsb3dTdHJhdGVneSB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3kgfSBmcm9tICcuLi9zdHJhdGVnaWVzL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSF9GTE9XX1NUUkFURUdZID0ge1xyXG4gIENvZGUoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICByZXR1cm4gbmV3IEF1dGhDb2RlRmxvd1N0cmF0ZWd5KGluamVjdG9yKTtcclxuICB9LFxyXG4gIFBhc3N3b3JkKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgcmV0dXJuIG5ldyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3koaW5qZWN0b3IpO1xyXG4gIH0sXHJcbn07XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './auth-flow-strategy';
|
|
1
|
+
export * from './auth-flow-strategy';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRoLWZsb3ctc3RyYXRlZ3knO1xyXG4iXX0=
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { Router } from '@angular/router';
|
|
2
|
-
import { pipe } from 'rxjs';
|
|
3
|
-
import { switchMap, tap } from 'rxjs/operators';
|
|
4
|
-
import { ConfigStateService, AbpLocalStorageService, } from '@abp/ng.core';
|
|
5
|
-
const cookieKey = 'rememberMe';
|
|
6
|
-
const storageKey = 'passwordFlow';
|
|
7
|
-
export const pipeToLogin = function (params, injector) {
|
|
8
|
-
const configState = injector.get(ConfigStateService);
|
|
9
|
-
const router = injector.get(Router);
|
|
10
|
-
const localStorage = injector.get(AbpLocalStorageService);
|
|
11
|
-
return pipe(switchMap(() => configState.refreshAppState()), tap(() => {
|
|
12
|
-
setRememberMe(params.rememberMe, localStorage);
|
|
13
|
-
if (params.redirectUrl)
|
|
14
|
-
router.navigate([params.redirectUrl]);
|
|
15
|
-
}));
|
|
16
|
-
};
|
|
17
|
-
export function setRememberMe(remember, localStorageService) {
|
|
18
|
-
removeRememberMe(localStorageService);
|
|
19
|
-
localStorageService.setItem(storageKey, 'true');
|
|
20
|
-
document.cookie = `${cookieKey}=true; path=/${remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''}`;
|
|
21
|
-
}
|
|
22
|
-
export function removeRememberMe(localStorageService) {
|
|
23
|
-
localStorageService.removeItem(storageKey);
|
|
24
|
-
document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';
|
|
25
|
-
}
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { pipe } from 'rxjs';
|
|
3
|
+
import { switchMap, tap } from 'rxjs/operators';
|
|
4
|
+
import { ConfigStateService, AbpLocalStorageService, } from '@abp/ng.core';
|
|
5
|
+
const cookieKey = 'rememberMe';
|
|
6
|
+
const storageKey = 'passwordFlow';
|
|
7
|
+
export const pipeToLogin = function (params, injector) {
|
|
8
|
+
const configState = injector.get(ConfigStateService);
|
|
9
|
+
const router = injector.get(Router);
|
|
10
|
+
const localStorage = injector.get(AbpLocalStorageService);
|
|
11
|
+
return pipe(switchMap(() => configState.refreshAppState()), tap(() => {
|
|
12
|
+
setRememberMe(params.rememberMe, localStorage);
|
|
13
|
+
if (params.redirectUrl)
|
|
14
|
+
router.navigate([params.redirectUrl]);
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
export function setRememberMe(remember, localStorageService) {
|
|
18
|
+
removeRememberMe(localStorageService);
|
|
19
|
+
localStorageService.setItem(storageKey, 'true');
|
|
20
|
+
document.cookie = `${cookieKey}=true; path=/${remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''}`;
|
|
21
|
+
}
|
|
22
|
+
export function removeRememberMe(localStorageService) {
|
|
23
|
+
localStorageService.removeItem(storageKey);
|
|
24
|
+
document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';
|
|
25
|
+
}
|
|
26
26
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvdXRpbHMvYXV0aC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxrQkFBa0IsRUFHbEIsc0JBQXNCLEdBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztBQUMvQixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFrQixVQUN4QyxNQUF1RCxFQUN2RCxRQUFrQjtJQUVsQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUQsT0FBTyxJQUFJLENBQ1QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUM5QyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ1AsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0MsSUFBSSxNQUFNLENBQUMsV0FBVztZQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBNkIsRUFDN0IsbUJBQTJDO0lBRTNDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxnQkFDNUIsUUFBUSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUMsRUFDekQsRUFBRSxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxtQkFBMkM7SUFDMUUsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxHQUFHLHFEQUFxRCxDQUFDO0FBQ3RGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9BdXRoU3RvcmFnZSwgVG9rZW5SZXNwb25zZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBwaXBlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBMb2dpblBhcmFtcyxcclxuICBQaXBlVG9Mb2dpbkZuLFxyXG4gIEFicExvY2FsU3RvcmFnZVNlcnZpY2UsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbmNvbnN0IGNvb2tpZUtleSA9ICdyZW1lbWJlck1lJztcclxuY29uc3Qgc3RvcmFnZUtleSA9ICdwYXNzd29yZEZsb3cnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBpcGVUb0xvZ2luOiBQaXBlVG9Mb2dpbkZuID0gZnVuY3Rpb24gKFxyXG4gIHBhcmFtczogUGljazxMb2dpblBhcmFtcywgJ3JlZGlyZWN0VXJsJyB8ICdyZW1lbWJlck1lJz4sXHJcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4pIHtcclxuICBjb25zdCBjb25maWdTdGF0ZSA9IGluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xyXG4gIGNvbnN0IGxvY2FsU3RvcmFnZSA9IGluamVjdG9yLmdldChBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcclxuICByZXR1cm4gcGlwZShcclxuICAgIHN3aXRjaE1hcCgoKSA9PiBjb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKSksXHJcbiAgICB0YXAoKCkgPT4ge1xyXG4gICAgICBzZXRSZW1lbWJlck1lKHBhcmFtcy5yZW1lbWJlck1lLCBsb2NhbFN0b3JhZ2UpO1xyXG4gICAgICBpZiAocGFyYW1zLnJlZGlyZWN0VXJsKSByb3V0ZXIubmF2aWdhdGUoW3BhcmFtcy5yZWRpcmVjdFVybF0pO1xyXG4gICAgfSksXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1lbWJlck1lKFxyXG4gIHJlbWVtYmVyOiBib29sZWFuIHwgdW5kZWZpbmVkLFxyXG4gIGxvY2FsU3RvcmFnZVNlcnZpY2U6IEFicExvY2FsU3RvcmFnZVNlcnZpY2UsXHJcbikge1xyXG4gIHJlbW92ZVJlbWVtYmVyTWUobG9jYWxTdG9yYWdlU2VydmljZSk7XHJcbiAgbG9jYWxTdG9yYWdlU2VydmljZS5zZXRJdGVtKHN0b3JhZ2VLZXksICd0cnVlJyk7XHJcbiAgZG9jdW1lbnQuY29va2llID0gYCR7Y29va2llS2V5fT10cnVlOyBwYXRoPS8ke1xyXG4gICAgcmVtZW1iZXIgPyAnIDtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UJyA6ICcnXHJcbiAgfWA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVSZW1lbWJlck1lKGxvY2FsU3RvcmFnZVNlcnZpY2U6IEFicExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcclxuICBsb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oc3RvcmFnZUtleSk7XHJcbiAgZG9jdW1lbnQuY29va2llID0gY29va2llS2V5ICsgJz0gOyBwYXRoPS87IGV4cGlyZXMgPSBUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCc7XHJcbn1cclxuIl19
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ConfigStateService } from '@abp/ng.core';
|
|
2
|
-
import { OAuthService } from 'angular-oauth2-oidc';
|
|
3
|
-
import { clearOAuthStorage } from './clear-o-auth-storage';
|
|
4
|
-
export const checkAccessToken = function (injector) {
|
|
5
|
-
const configState = injector.get(ConfigStateService);
|
|
6
|
-
const oAuth = injector.get(OAuthService);
|
|
7
|
-
if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {
|
|
8
|
-
clearOAuthStorage();
|
|
9
|
-
}
|
|
10
|
-
};
|
|
1
|
+
import { ConfigStateService } from '@abp/ng.core';
|
|
2
|
+
import { OAuthService } from 'angular-oauth2-oidc';
|
|
3
|
+
import { clearOAuthStorage } from './clear-o-auth-storage';
|
|
4
|
+
export const checkAccessToken = function (injector) {
|
|
5
|
+
const configState = injector.get(ConfigStateService);
|
|
6
|
+
const oAuth = injector.get(OAuthService);
|
|
7
|
+
if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {
|
|
8
|
+
clearOAuthStorage();
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYWNjZXNzLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi91dGlscy9jaGVjay1hY2Nlc3MtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQStCLFVBQVUsUUFBa0I7SUFDdEYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUN6RSxpQkFBaUIsRUFBRSxDQUFDO0tBQ3JCO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hlY2tBdXRoZW50aWNhdGlvblN0YXRlRm4sIENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBjbGVhck9BdXRoU3RvcmFnZSB9IGZyb20gJy4vY2xlYXItby1hdXRoLXN0b3JhZ2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNoZWNrQWNjZXNzVG9rZW46IENoZWNrQXV0aGVudGljYXRpb25TdGF0ZUZuID0gZnVuY3Rpb24gKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIGNvbnN0IGNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgY29uc3Qgb0F1dGggPSBpbmplY3Rvci5nZXQoT0F1dGhTZXJ2aWNlKTtcclxuICBpZiAob0F1dGguaGFzVmFsaWRBY2Nlc3NUb2tlbigpICYmICFjb25maWdTdGF0ZS5nZXREZWVwKCdjdXJyZW50VXNlci5pZCcpKSB7XHJcbiAgICBjbGVhck9BdXRoU3RvcmFnZSgpO1xyXG4gIH1cclxufTtcclxuIl19
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { oAuthStorage } from './oauth-storage';
|
|
2
|
-
export function clearOAuthStorage(storage = oAuthStorage) {
|
|
3
|
-
const keys = [
|
|
4
|
-
'access_token',
|
|
5
|
-
'id_token',
|
|
6
|
-
'refresh_token',
|
|
7
|
-
'nonce',
|
|
8
|
-
'PKCE_verifier',
|
|
9
|
-
'expires_at',
|
|
10
|
-
'id_token_claims_obj',
|
|
11
|
-
'id_token_expires_at',
|
|
12
|
-
'id_token_stored_at',
|
|
13
|
-
'access_token_stored_at',
|
|
14
|
-
'granted_scopes',
|
|
15
|
-
'session_state',
|
|
16
|
-
];
|
|
17
|
-
keys.forEach(key => storage.removeItem(key));
|
|
18
|
-
}
|
|
1
|
+
import { oAuthStorage } from './oauth-storage';
|
|
2
|
+
export function clearOAuthStorage(storage = oAuthStorage) {
|
|
3
|
+
const keys = [
|
|
4
|
+
'access_token',
|
|
5
|
+
'id_token',
|
|
6
|
+
'refresh_token',
|
|
7
|
+
'nonce',
|
|
8
|
+
'PKCE_verifier',
|
|
9
|
+
'expires_at',
|
|
10
|
+
'id_token_claims_obj',
|
|
11
|
+
'id_token_expires_at',
|
|
12
|
+
'id_token_stored_at',
|
|
13
|
+
'access_token_stored_at',
|
|
14
|
+
'granted_scopes',
|
|
15
|
+
'session_state',
|
|
16
|
+
];
|
|
17
|
+
keys.forEach(key => storage.removeItem(key));
|
|
18
|
+
}
|
|
19
19
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItby1hdXRoLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3V0aWxzL2NsZWFyLW8tYXV0aC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBd0IsWUFBWTtJQUNwRSxNQUFNLElBQUksR0FBRztRQUNYLGNBQWM7UUFDZCxVQUFVO1FBQ1YsZUFBZTtRQUNmLE9BQU87UUFDUCxlQUFlO1FBQ2YsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIsZUFBZTtLQUNoQixDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IG9BdXRoU3RvcmFnZSB9IGZyb20gJy4vb2F1dGgtc3RvcmFnZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJPQXV0aFN0b3JhZ2Uoc3RvcmFnZTogT0F1dGhTdG9yYWdlID0gb0F1dGhTdG9yYWdlKSB7XHJcbiAgY29uc3Qga2V5cyA9IFtcclxuICAgICdhY2Nlc3NfdG9rZW4nLFxyXG4gICAgJ2lkX3Rva2VuJyxcclxuICAgICdyZWZyZXNoX3Rva2VuJyxcclxuICAgICdub25jZScsXHJcbiAgICAnUEtDRV92ZXJpZmllcicsXHJcbiAgICAnZXhwaXJlc19hdCcsXHJcbiAgICAnaWRfdG9rZW5fY2xhaW1zX29iaicsXHJcbiAgICAnaWRfdG9rZW5fZXhwaXJlc19hdCcsXHJcbiAgICAnaWRfdG9rZW5fc3RvcmVkX2F0JyxcclxuICAgICdhY2Nlc3NfdG9rZW5fc3RvcmVkX2F0JyxcclxuICAgICdncmFudGVkX3Njb3BlcycsXHJcbiAgICAnc2Vzc2lvbl9zdGF0ZScsXHJcbiAgXTtcclxuXHJcbiAga2V5cy5mb3JFYWNoKGtleSA9PiBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XHJcbn1cclxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './oauth-storage';
|
|
2
|
-
export * from './storage.factory';
|
|
3
|
-
export * from './auth-utils';
|
|
4
|
-
export * from './clear-o-auth-storage';
|
|
5
|
-
export * from './check-access-token';
|
|
1
|
+
export * from './oauth-storage';
|
|
2
|
+
export * from './storage.factory';
|
|
3
|
+
export * from './auth-utils';
|
|
4
|
+
export * from './clear-o-auth-storage';
|
|
5
|
+
export * from './check-access-token';
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29hdXRoLXN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2UuZmFjdG9yeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC11dGlscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2xlYXItby1hdXRoLXN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoZWNrLWFjY2Vzcy10b2tlbic7XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const oAuthStorage = localStorage;
|
|
1
|
+
export const oAuthStorage = localStorage;
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvdXRpbHMvb2F1dGgtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IG9BdXRoU3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { oAuthStorage } from './oauth-storage';
|
|
2
|
-
export function storageFactory() {
|
|
3
|
-
return oAuthStorage;
|
|
4
|
-
}
|
|
1
|
+
import { oAuthStorage } from './oauth-storage';
|
|
2
|
+
export function storageFactory() {
|
|
3
|
+
return oAuthStorage;
|
|
4
|
+
}
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi91dGlscy9zdG9yYWdlLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgb0F1dGhTdG9yYWdlIH0gZnJvbSAnLi9vYXV0aC1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdG9yYWdlRmFjdG9yeSgpOiBPQXV0aFN0b3JhZ2Uge1xyXG4gIHJldHVybiBvQXV0aFN0b3JhZ2U7XHJcbn1cclxuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from './lib/oauth.module';
|
|
2
|
-
export * from './lib/utils';
|
|
3
|
-
export * from './lib/tokens';
|
|
4
|
-
export * from './lib/services';
|
|
5
|
-
export * from './lib/strategies';
|
|
6
|
-
export * from './lib/handlers';
|
|
7
|
-
export * from './lib/interceptors';
|
|
8
|
-
export * from './lib/guards';
|
|
9
|
-
export * from './lib/providers';
|
|
1
|
+
export * from './lib/oauth.module';
|
|
2
|
+
export * from './lib/utils';
|
|
3
|
+
export * from './lib/tokens';
|
|
4
|
+
export * from './lib/services';
|
|
5
|
+
export * from './lib/strategies';
|
|
6
|
+
export * from './lib/handlers';
|
|
7
|
+
export * from './lib/interceptors';
|
|
8
|
+
export * from './lib/guards';
|
|
9
|
+
export * from './lib/providers';
|
|
10
10
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvb2F1dGgubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmF0ZWdpZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9oYW5kbGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyY2VwdG9ycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycyc7XHJcbiJdfQ==
|