@abp/ng.core 7.0.0-rc.5 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/abstracts/auth.guard.mjs +17 -0
- package/esm2020/lib/abstracts/auth.service.mjs +42 -0
- package/esm2020/lib/abstracts/index.mjs +3 -1
- package/esm2020/lib/core.module.mjs +6 -34
- package/esm2020/lib/guards/index.mjs +1 -2
- package/esm2020/lib/interceptors/api.interceptor.mjs +11 -40
- package/esm2020/lib/models/auth.mjs +1 -1
- package/esm2020/lib/models/environment.mjs +1 -1
- package/esm2020/lib/models/index.mjs +2 -2
- package/esm2020/lib/services/index.mjs +1 -3
- package/esm2020/lib/tokens/check-authentication-state.mjs +3 -0
- package/esm2020/lib/tokens/index.mjs +4 -1
- package/esm2020/lib/tokens/manage-profile.token.mjs +3 -12
- package/esm2020/lib/tokens/pipe-to-login.token.mjs +3 -0
- package/esm2020/lib/tokens/set-token-response-to-storage.token.mjs +3 -0
- package/esm2020/lib/utils/index.mjs +1 -2
- package/esm2020/lib/utils/initial-utils.mjs +15 -18
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/abp-ng.core.mjs +188 -522
- package/fesm2015/abp-ng.core.mjs.map +1 -1
- package/fesm2020/abp-ng.core.mjs +188 -505
- package/fesm2020/abp-ng.core.mjs.map +1 -1
- package/lib/{guards → abstracts}/auth.guard.d.ts +3 -6
- package/lib/{services → abstracts}/auth.service.d.ts +17 -7
- package/lib/abstracts/index.d.ts +2 -0
- package/lib/core.module.d.ts +7 -10
- package/lib/guards/index.d.ts +0 -1
- package/lib/interceptors/api.interceptor.d.ts +7 -9
- package/lib/models/auth.d.ts +5 -0
- package/lib/models/environment.d.ts +1 -1
- package/lib/models/index.d.ts +1 -1
- package/lib/services/index.d.ts +0 -2
- package/lib/tokens/check-authentication-state.d.ts +3 -0
- package/lib/tokens/index.d.ts +3 -0
- package/lib/tokens/pipe-to-login.token.d.ts +3 -0
- package/lib/tokens/set-token-response-to-storage.token.d.ts +3 -0
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/initial-utils.d.ts +1 -170
- package/package.json +2 -2
- package/public-api.d.ts +1 -1
- package/esm2020/lib/guards/auth.guard.mjs +0 -29
- package/esm2020/lib/handlers/oauth-configuration.handler.mjs +0 -37
- package/esm2020/lib/services/auth.service.mjs +0 -44
- package/esm2020/lib/services/timeout-limited-oauth.service.mjs +0 -16
- package/esm2020/lib/strategies/auth-flow.strategy.mjs +0 -190
- package/esm2020/lib/utils/auth-utils.mjs +0 -42
- package/lib/handlers/oauth-configuration.handler.d.ts +0 -13
- package/lib/services/timeout-limited-oauth.service.d.ts +0 -7
- package/lib/strategies/auth-flow.strategy.d.ts +0 -393
- package/lib/utils/auth-utils.d.ts +0 -175
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { OAuthErrorEvent, OAuthInfoEvent, OAuthService } from 'angular-oauth2-oidc';
|
|
4
|
-
import { from, of, pipe } from 'rxjs';
|
|
5
|
-
import { filter, switchMap, tap } from 'rxjs/operators';
|
|
6
|
-
import { ConfigStateService } from '../services/config-state.service';
|
|
7
|
-
import { EnvironmentService } from '../services/environment.service';
|
|
8
|
-
import { HttpErrorReporterService } from '../services/http-error-reporter.service';
|
|
9
|
-
import { SessionStateService } from '../services/session-state.service';
|
|
10
|
-
import { TENANT_KEY } from '../tokens/tenant-key.token';
|
|
11
|
-
import { removeRememberMe, setRememberMe } from '../utils/auth-utils';
|
|
12
|
-
import { noop } from '../utils/common-utils';
|
|
13
|
-
export const oAuthStorage = localStorage;
|
|
14
|
-
export class AuthFlowStrategy {
|
|
15
|
-
constructor(injector) {
|
|
16
|
-
this.injector = injector;
|
|
17
|
-
this.catchError = err => {
|
|
18
|
-
this.httpErrorReporter.reportError(err);
|
|
19
|
-
return of(null);
|
|
20
|
-
};
|
|
21
|
-
this.httpErrorReporter = injector.get(HttpErrorReporterService);
|
|
22
|
-
this.environment = injector.get(EnvironmentService);
|
|
23
|
-
this.configState = injector.get(ConfigStateService);
|
|
24
|
-
this.oAuthService = injector.get(OAuthService);
|
|
25
|
-
this.sessionState = injector.get(SessionStateService);
|
|
26
|
-
this.oAuthConfig = this.environment.getEnvironment().oAuthConfig;
|
|
27
|
-
this.tenantKey = injector.get(TENANT_KEY);
|
|
28
|
-
this.listenToOauthErrors();
|
|
29
|
-
}
|
|
30
|
-
async init() {
|
|
31
|
-
const shouldClear = shouldStorageClear(this.environment.getEnvironment().oAuthConfig.clientId, oAuthStorage);
|
|
32
|
-
if (shouldClear)
|
|
33
|
-
clearOAuthStorage(oAuthStorage);
|
|
34
|
-
this.oAuthService.configure(this.oAuthConfig);
|
|
35
|
-
this.oAuthService.events
|
|
36
|
-
.pipe(filter(event => event.type === 'token_refresh_error'))
|
|
37
|
-
.subscribe(() => this.navigateToLogin());
|
|
38
|
-
return this.oAuthService
|
|
39
|
-
.loadDiscoveryDocument()
|
|
40
|
-
.then(() => {
|
|
41
|
-
if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
|
|
42
|
-
return Promise.resolve();
|
|
43
|
-
}
|
|
44
|
-
return this.refreshToken();
|
|
45
|
-
})
|
|
46
|
-
.catch(this.catchError);
|
|
47
|
-
}
|
|
48
|
-
refreshToken() {
|
|
49
|
-
return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());
|
|
50
|
-
}
|
|
51
|
-
listenToOauthErrors() {
|
|
52
|
-
this.oAuthService.events
|
|
53
|
-
.pipe(filter(event => event instanceof OAuthErrorEvent), tap(() => clearOAuthStorage()), switchMap(() => this.configState.refreshAppState()))
|
|
54
|
-
.subscribe();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export class AuthCodeFlowStrategy extends AuthFlowStrategy {
|
|
58
|
-
constructor() {
|
|
59
|
-
super(...arguments);
|
|
60
|
-
this.isInternalAuth = false;
|
|
61
|
-
}
|
|
62
|
-
async init() {
|
|
63
|
-
return super
|
|
64
|
-
.init()
|
|
65
|
-
.then(() => this.oAuthService.tryLogin().catch(noop))
|
|
66
|
-
.then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));
|
|
67
|
-
}
|
|
68
|
-
navigateToLogin(queryParams) {
|
|
69
|
-
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
70
|
-
}
|
|
71
|
-
checkIfInternalAuth(queryParams) {
|
|
72
|
-
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
logout(queryParams) {
|
|
76
|
-
return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));
|
|
77
|
-
}
|
|
78
|
-
login(queryParams) {
|
|
79
|
-
this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
|
|
80
|
-
return of(null);
|
|
81
|
-
}
|
|
82
|
-
getCultureParams(queryParams) {
|
|
83
|
-
const lang = this.sessionState.getLanguage();
|
|
84
|
-
const culture = { culture: lang, 'ui-culture': lang };
|
|
85
|
-
return { ...(lang && culture), ...queryParams };
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
|
|
89
|
-
constructor() {
|
|
90
|
-
super(...arguments);
|
|
91
|
-
this.isInternalAuth = true;
|
|
92
|
-
this.cookieKey = 'rememberMe';
|
|
93
|
-
this.storageKey = 'passwordFlow';
|
|
94
|
-
}
|
|
95
|
-
listenToTokenExpiration() {
|
|
96
|
-
this.oAuthService.events
|
|
97
|
-
.pipe(filter(event => event instanceof OAuthInfoEvent &&
|
|
98
|
-
event.type === 'token_expires' &&
|
|
99
|
-
event.info === 'access_token'))
|
|
100
|
-
.subscribe(() => {
|
|
101
|
-
if (this.oAuthService.getRefreshToken()) {
|
|
102
|
-
this.refreshToken();
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
this.oAuthService.logOut();
|
|
106
|
-
removeRememberMe();
|
|
107
|
-
this.configState.refreshAppState().subscribe();
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
async init() {
|
|
112
|
-
if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {
|
|
113
|
-
this.oAuthService.logOut();
|
|
114
|
-
}
|
|
115
|
-
return super.init().then(() => this.listenToTokenExpiration());
|
|
116
|
-
}
|
|
117
|
-
navigateToLogin(queryParams) {
|
|
118
|
-
const router = this.injector.get(Router);
|
|
119
|
-
router.navigate(['/account/login'], { queryParams });
|
|
120
|
-
}
|
|
121
|
-
checkIfInternalAuth() {
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
login(params) {
|
|
125
|
-
const tenant = this.sessionState.getTenant();
|
|
126
|
-
return from(this.oAuthService.fetchTokenUsingPasswordFlow(params.username, params.password, new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }))).pipe(this.pipeToLogin(params));
|
|
127
|
-
}
|
|
128
|
-
pipeToLogin(params) {
|
|
129
|
-
const router = this.injector.get(Router);
|
|
130
|
-
return pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
|
|
131
|
-
setRememberMe(params.rememberMe);
|
|
132
|
-
if (params.redirectUrl)
|
|
133
|
-
router.navigate([params.redirectUrl]);
|
|
134
|
-
}));
|
|
135
|
-
}
|
|
136
|
-
logout(queryParams) {
|
|
137
|
-
const router = this.injector.get(Router);
|
|
138
|
-
return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
|
|
139
|
-
router.navigateByUrl('/');
|
|
140
|
-
removeRememberMe();
|
|
141
|
-
}));
|
|
142
|
-
}
|
|
143
|
-
refreshToken() {
|
|
144
|
-
return this.oAuthService.refreshToken().catch(() => {
|
|
145
|
-
clearOAuthStorage();
|
|
146
|
-
removeRememberMe();
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
export const AUTH_FLOW_STRATEGY = {
|
|
151
|
-
Code(injector) {
|
|
152
|
-
return new AuthCodeFlowStrategy(injector);
|
|
153
|
-
},
|
|
154
|
-
Password(injector) {
|
|
155
|
-
return new AuthPasswordFlowStrategy(injector);
|
|
156
|
-
},
|
|
157
|
-
};
|
|
158
|
-
export function clearOAuthStorage(storage = oAuthStorage) {
|
|
159
|
-
const keys = [
|
|
160
|
-
'access_token',
|
|
161
|
-
'id_token',
|
|
162
|
-
'refresh_token',
|
|
163
|
-
'nonce',
|
|
164
|
-
'PKCE_verifier',
|
|
165
|
-
'expires_at',
|
|
166
|
-
'id_token_claims_obj',
|
|
167
|
-
'id_token_expires_at',
|
|
168
|
-
'id_token_stored_at',
|
|
169
|
-
'access_token_stored_at',
|
|
170
|
-
'granted_scopes',
|
|
171
|
-
'session_state',
|
|
172
|
-
];
|
|
173
|
-
keys.forEach(key => storage.removeItem(key));
|
|
174
|
-
}
|
|
175
|
-
function shouldStorageClear(clientId, storage) {
|
|
176
|
-
const key = 'abpOAuthClientId';
|
|
177
|
-
if (!storage.getItem(key)) {
|
|
178
|
-
storage.setItem(key, clientId);
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
const shouldClear = storage.getItem(key) !== clientId;
|
|
182
|
-
if (shouldClear)
|
|
183
|
-
storage.setItem(key, clientId);
|
|
184
|
-
return shouldClear;
|
|
185
|
-
}
|
|
186
|
-
function getCookieValueByName(name) {
|
|
187
|
-
const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
|
|
188
|
-
return match ? match[2] : '';
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0cmF0ZWdpZXMvYXV0aC1mbG93LnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUVMLGVBQWUsRUFDZixjQUFjLEVBQ2QsWUFBWSxFQUViLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUM7QUFFekMsTUFBTSxPQUFnQixnQkFBZ0I7SUFxQnBDLFlBQXNCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMaEMsZUFBVSxHQUFHLEdBQUcsQ0FBQyxF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O1FBQ1AsZUFBZTtRQUNmLFlBQVk7UUFDWixxQkFBcUI7UUFDckIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGVBQWU7S0FDaEIsQ0FBQztJQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxPQUFxQjtJQUNqRSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDdEQsSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsSUFBWTtJQUN4QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIEF1dGhDb25maWcsXHJcbiAgT0F1dGhFcnJvckV2ZW50LFxyXG4gIE9BdXRoSW5mb0V2ZW50LFxyXG4gIE9BdXRoU2VydmljZSxcclxuICBPQXV0aFN0b3JhZ2VcclxufSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHBpcGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTG9naW5QYXJhbXMgfSBmcm9tICcuLi9tb2RlbHMvYXV0aCc7XHJcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2h0dHAtZXJyb3ItcmVwb3J0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXNzaW9uLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBURU5BTlRfS0VZIH0gZnJvbSAnLi4vdG9rZW5zL3RlbmFudC1rZXkudG9rZW4nO1xyXG5pbXBvcnQgeyByZW1vdmVSZW1lbWJlck1lLCBzZXRSZW1lbWJlck1lIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscyc7XHJcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi91dGlscy9jb21tb24tdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IG9BdXRoU3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoRmxvd1N0cmF0ZWd5IHtcclxuICBhYnN0cmFjdCByZWFkb25seSBpc0ludGVybmFsQXV0aDogYm9vbGVhbjtcclxuXHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBvQXV0aENvbmZpZzogQXV0aENvbmZpZztcclxuICBwcm90ZWN0ZWQgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB0ZW5hbnRLZXk6IHN0cmluZztcclxuXHJcbiAgYWJzdHJhY3QgY2hlY2tJZkludGVybmFsQXV0aChxdWVyeVBhcmFtcz86IFBhcmFtcyk6IGJvb2xlYW47XHJcbiAgYWJzdHJhY3QgbmF2aWdhdGVUb0xvZ2luKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogdm9pZDtcclxuICBhYnN0cmFjdCBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgYWJzdHJhY3QgbG9naW4ocGFyYW1zPzogTG9naW5QYXJhbXMgfCBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIHByaXZhdGUgY2F0Y2hFcnJvciA9IGVyciA9PiB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyLnJlcG9ydEVycm9yKGVycik7XHJcbiAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5odHRwRXJyb3JSZXBvcnRlciA9IGluamVjdG9yLmdldChIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UpO1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG4gICAgdGhpcy5jb25maWdTdGF0ZSA9IGluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoT0F1dGhTZXJ2aWNlKTtcclxuICAgIHRoaXMuc2Vzc2lvblN0YXRlID0gaW5qZWN0b3IuZ2V0KFNlc3Npb25TdGF0ZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5vQXV0aENvbmZpZyA9IHRoaXMuZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKS5vQXV0aENvbmZpZztcclxuICAgIHRoaXMudGVuYW50S2V5ID0gaW5qZWN0b3IuZ2V0KFRFTkFOVF9LRVkpO1xyXG5cclxuICAgIHRoaXMubGlzdGVuVG9PYXV0aEVycm9ycygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3Qgc2hvdWxkQ2xlYXIgPSBzaG91bGRTdG9yYWdlQ2xlYXIoXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKS5vQXV0aENvbmZpZy5jbGllbnRJZCxcclxuICAgICAgb0F1dGhTdG9yYWdlLFxyXG4gICAgKTtcclxuICAgIGlmIChzaG91bGRDbGVhcikgY2xlYXJPQXV0aFN0b3JhZ2Uob0F1dGhTdG9yYWdlKTtcclxuXHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5vQXV0aENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVmcmVzaF9lcnJvcicpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZVxyXG4gICAgICAubG9hZERpc2NvdmVyeURvY3VtZW50KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm9BdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCkgfHwgIXRoaXMub0F1dGhTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW4oKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKHRoaXMuY2F0Y2hFcnJvcik7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvT2F1dGhFcnJvcnMoKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcclxuICAgICAgICB0YXAoKCkgPT4gY2xlYXJPQXV0aFN0b3JhZ2UoKSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoQ29kZUZsb3dTdHJhdGVneSBleHRlbmRzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoID0gZmFsc2U7XHJcblxyXG4gIGFzeW5jIGluaXQoKSB7XHJcbiAgICByZXR1cm4gc3VwZXJcclxuICAgICAgLmluaXQoKVxyXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm9BdXRoU2VydmljZS50cnlMb2dpbigpLmNhdGNoKG5vb3ApKVxyXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdygnJywgdGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmSW50ZXJuYWxBdXRoKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLm9BdXRoU2VydmljZS5yZXZva2VUb2tlbkFuZExvZ291dCh0aGlzLmdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXMpKSk7XHJcbiAgfVxyXG5cclxuICBsb2dpbihxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuaW5pdENvZGVGbG93KCcnLCB0aGlzLmdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXMpKTtcclxuICAgIHJldHVybiBvZihudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgY29uc3QgbGFuZyA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlKCk7XHJcbiAgICBjb25zdCBjdWx0dXJlID0geyBjdWx0dXJlOiBsYW5nLCAndWktY3VsdHVyZSc6IGxhbmcgfTtcclxuICAgIHJldHVybiB7IC4uLihsYW5nICYmIGN1bHR1cmUpLCAuLi5xdWVyeVBhcmFtcyB9O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1dGhQYXNzd29yZEZsb3dTdHJhdGVneSBleHRlbmRzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoID0gdHJ1ZTtcclxuICBwcml2YXRlIGNvb2tpZUtleSA9ICdyZW1lbWJlck1lJztcclxuICBwcml2YXRlIHN0b3JhZ2VLZXkgPSAncGFzc3dvcmRGbG93JztcclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub1Rva2VuRXhwaXJhdGlvbigpIHtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmV2ZW50c1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICBldmVudCA9PlxyXG4gICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE9BdXRoSW5mb0V2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LnR5cGUgPT09ICd0b2tlbl9leHBpcmVzJyAmJlxyXG4gICAgICAgICAgICBldmVudC5pbmZvID09PSAnYWNjZXNzX3Rva2VuJyxcclxuICAgICAgICApLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm9BdXRoU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKSkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5vQXV0aFNlcnZpY2UubG9nT3V0KCk7XHJcbiAgICAgICAgICByZW1vdmVSZW1lbWJlck1lKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0KCkge1xyXG4gICAgaWYgKCFnZXRDb29raWVWYWx1ZUJ5TmFtZSh0aGlzLmNvb2tpZUtleSkgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KSkge1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5sb2dPdXQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3VwZXIuaW5pdCgpLnRoZW4oKCkgPT4gdGhpcy5saXN0ZW5Ub1Rva2VuRXhwaXJhdGlvbigpKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Mb2dpbihxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcclxuICAgIHJvdXRlci5uYXZpZ2F0ZShbJy9hY2NvdW50L2xvZ2luJ10sIHsgcXVlcnlQYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmSW50ZXJuYWxBdXRoKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2dpbihwYXJhbXM6IExvZ2luUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHRlbmFudCA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldFRlbmFudCgpO1xyXG5cclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5mZXRjaFRva2VuVXNpbmdQYXNzd29yZEZsb3coXHJcbiAgICAgICAgcGFyYW1zLnVzZXJuYW1lLFxyXG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCxcclxuICAgICAgICBuZXcgSHR0cEhlYWRlcnMoeyAuLi4odGVuYW50ICYmIHRlbmFudC5pZCAmJiB7IFt0aGlzLnRlbmFudEtleV06IHRlbmFudC5pZCB9KSB9KSxcclxuICAgICAgKSxcclxuICAgICkucGlwZSh0aGlzLnBpcGVUb0xvZ2luKHBhcmFtcykpO1xyXG4gIH1cclxuXHJcbiAgcGlwZVRvTG9naW4ocGFyYW1zOiBQaWNrPExvZ2luUGFyYW1zLCAncmVkaXJlY3RVcmwnIHwgJ3JlbWVtYmVyTWUnPikge1xyXG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcclxuXHJcbiAgICByZXR1cm4gcGlwZShcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHNldFJlbWVtYmVyTWUocGFyYW1zLnJlbWVtYmVyTWUpO1xyXG4gICAgICAgIGlmIChwYXJhbXMucmVkaXJlY3RVcmwpIHJvdXRlci5uYXZpZ2F0ZShbcGFyYW1zLnJlZGlyZWN0VXJsXSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGxvZ291dChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xyXG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLm9BdXRoU2VydmljZS5yZXZva2VUb2tlbkFuZExvZ291dChxdWVyeVBhcmFtcykpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICByb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xyXG4gICAgICAgIHJlbW92ZVJlbWVtYmVyTWUoKTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlZnJlc2hUb2tlbigpIHtcclxuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5yZWZyZXNoVG9rZW4oKS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgIGNsZWFyT0F1dGhTdG9yYWdlKCk7XHJcbiAgICAgIHJlbW92ZVJlbWVtYmVyTWUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFVVEhfRkxPV19TVFJBVEVHWSA9IHtcclxuICBDb2RlKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgcmV0dXJuIG5ldyBBdXRoQ29kZUZsb3dTdHJhdGVneShpbmplY3Rvcik7XHJcbiAgfSxcclxuICBQYXNzd29yZChpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHJldHVybiBuZXcgQXV0aFBhc3N3b3JkRmxvd1N0cmF0ZWd5KGluamVjdG9yKTtcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyT0F1dGhTdG9yYWdlKHN0b3JhZ2U6IE9BdXRoU3RvcmFnZSA9IG9BdXRoU3RvcmFnZSkge1xyXG4gIGNvbnN0IGtleXMgPSBbXHJcbiAgICAnYWNjZXNzX3Rva2VuJyxcclxuICAgICdpZF90b2tlbicsXHJcbiAgICAncmVmcmVzaF90b2tlbicsXHJcbiAgICAnbm9uY2UnLFxyXG4gICAgJ1BLQ0VfdmVyaWZpZXInLFxyXG4gICAgJ2V4cGlyZXNfYXQnLFxyXG4gICAgJ2lkX3Rva2VuX2NsYWltc19vYmonLFxyXG4gICAgJ2lkX3Rva2VuX2V4cGlyZXNfYXQnLFxyXG4gICAgJ2lkX3Rva2VuX3N0b3JlZF9hdCcsXHJcbiAgICAnYWNjZXNzX3Rva2VuX3N0b3JlZF9hdCcsXHJcbiAgICAnZ3JhbnRlZF9zY29wZXMnLFxyXG4gICAgJ3Nlc3Npb25fc3RhdGUnLFxyXG4gIF07XHJcblxyXG4gIGtleXMuZm9yRWFjaChrZXkgPT4gc3RvcmFnZS5yZW1vdmVJdGVtKGtleSkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzaG91bGRTdG9yYWdlQ2xlYXIoY2xpZW50SWQ6IHN0cmluZywgc3RvcmFnZTogT0F1dGhTdG9yYWdlKTogYm9vbGVhbiB7XHJcbiAgY29uc3Qga2V5ID0gJ2FicE9BdXRoQ2xpZW50SWQnO1xyXG4gIGlmICghc3RvcmFnZS5nZXRJdGVtKGtleSkpIHtcclxuICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIGNsaWVudElkKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHNob3VsZENsZWFyID0gc3RvcmFnZS5nZXRJdGVtKGtleSkgIT09IGNsaWVudElkO1xyXG4gIGlmIChzaG91bGRDbGVhcikgc3RvcmFnZS5zZXRJdGVtKGtleSwgY2xpZW50SWQpO1xyXG4gIHJldHVybiBzaG91bGRDbGVhcjtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q29va2llVmFsdWVCeU5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICc9KFteO10rKScpKTtcclxuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsyXSA6ICcnO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,42 +0,0 @@
|
|
|
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 '../services/config-state.service';
|
|
6
|
-
const cookieKey = 'rememberMe';
|
|
7
|
-
const storageKey = 'passwordFlow';
|
|
8
|
-
export function pipeToLogin(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 function setTokenResponseToStorage(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9hdXRoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7QUFDL0IsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0FBRWxDLE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQXVELEVBQ3ZELFFBQWtCO0lBRWxCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBDLE9BQU8sSUFBSSxDQUNULFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsRUFDOUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNQLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsSUFBSSxNQUFNLENBQUMsV0FBVztZQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUFrQixFQUFFLFFBQXVCO0lBQ25GLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ25GLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFM0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFM0QsSUFBSSxhQUFhLEVBQUU7UUFDakIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzdFO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLHFCQUFxQixHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcscUJBQXFCLENBQUM7UUFDeEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0tBQy9DO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBaUI7SUFDN0MsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQixZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxnQkFDNUIsUUFBUSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUMsRUFDekQsRUFBRSxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxxREFBcUQsQ0FBQztBQUN0RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT0F1dGhTdG9yYWdlLCBUb2tlblJlc3BvbnNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IHBpcGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IExvZ2luUGFyYW1zIH0gZnJvbSAnLi4vbW9kZWxzL2F1dGgnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWctc3RhdGUuc2VydmljZSc7XHJcblxyXG5jb25zdCBjb29raWVLZXkgPSAncmVtZW1iZXJNZSc7XHJcbmNvbnN0IHN0b3JhZ2VLZXkgPSAncGFzc3dvcmRGbG93JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwaXBlVG9Mb2dpbihcclxuICBwYXJhbXM6IFBpY2s8TG9naW5QYXJhbXMsICdyZWRpcmVjdFVybCcgfCAncmVtZW1iZXJNZSc+LFxyXG4gIGluamVjdG9yOiBJbmplY3RvcixcclxuKSB7XHJcbiAgY29uc3QgY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICBjb25zdCByb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcclxuXHJcbiAgcmV0dXJuIHBpcGUoXHJcbiAgICBzd2l0Y2hNYXAoKCkgPT4gY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgdGFwKCgpID0+IHtcclxuICAgICAgc2V0UmVtZW1iZXJNZShwYXJhbXMucmVtZW1iZXJNZSk7XHJcbiAgICAgIGlmIChwYXJhbXMucmVkaXJlY3RVcmwpIHJvdXRlci5uYXZpZ2F0ZShbcGFyYW1zLnJlZGlyZWN0VXJsXSk7XHJcbiAgICB9KSxcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9rZW5SZXNwb25zZVRvU3RvcmFnZShpbmplY3RvcjogSW5qZWN0b3IsIHRva2VuUmVzOiBUb2tlblJlc3BvbnNlKSB7XHJcbiAgY29uc3QgeyBhY2Nlc3NfdG9rZW4sIHJlZnJlc2hfdG9rZW4sIHNjb3BlOiBncmFudGVkU2NvcGVzLCBleHBpcmVzX2luIH0gPSB0b2tlblJlcztcclxuICBjb25zdCBzdG9yYWdlID0gaW5qZWN0b3IuZ2V0KE9BdXRoU3RvcmFnZSk7XHJcblxyXG4gIHN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXNzX3Rva2VuJywgYWNjZXNzX3Rva2VuKTtcclxuICBzdG9yYWdlLnNldEl0ZW0oJ3JlZnJlc2hfdG9rZW4nLCByZWZyZXNoX3Rva2VuKTtcclxuICBzdG9yYWdlLnNldEl0ZW0oJ2FjY2Vzc190b2tlbl9zdG9yZWRfYXQnLCAnJyArIERhdGUubm93KCkpO1xyXG5cclxuICBpZiAoZ3JhbnRlZFNjb3Blcykge1xyXG4gICAgc3RvcmFnZS5zZXRJdGVtKCdncmFudGVkX3Njb3BlcycsIEpTT04uc3RyaW5naWZ5KGdyYW50ZWRTY29wZXMuc3BsaXQoJyAnKSkpO1xyXG4gIH1cclxuXHJcbiAgaWYgKGV4cGlyZXNfaW4pIHtcclxuICAgIGNvbnN0IGV4cGlyZXNJbk1pbGxpU2Vjb25kcyA9IGV4cGlyZXNfaW4gKiAxMDAwO1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGV4cGlyZXNBdCA9IG5vdy5nZXRUaW1lKCkgKyBleHBpcmVzSW5NaWxsaVNlY29uZHM7XHJcbiAgICBzdG9yYWdlLnNldEl0ZW0oJ2V4cGlyZXNfYXQnLCAnJyArIGV4cGlyZXNBdCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtZW1iZXJNZShyZW1lbWJlcjogYm9vbGVhbikge1xyXG4gIHJlbW92ZVJlbWVtYmVyTWUoKTtcclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCAndHJ1ZScpO1xyXG4gIGRvY3VtZW50LmNvb2tpZSA9IGAke2Nvb2tpZUtleX09dHJ1ZTsgcGF0aD0vJHtcclxuICAgIHJlbWVtYmVyID8gJyA7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCcgOiAnJ1xyXG4gIH1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUmVtZW1iZXJNZSgpIHtcclxuICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yYWdlS2V5KTtcclxuICBkb2N1bWVudC5jb29raWUgPSBjb29raWVLZXkgKyAnPSA7IHBhdGg9LzsgZXhwaXJlcyA9IFRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJztcclxufVxyXG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { OAuthService } from 'angular-oauth2-oidc';
|
|
2
|
-
import { ABP } from '../models/common';
|
|
3
|
-
import { EnvironmentService } from '../services/environment.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class OAuthConfigurationHandler {
|
|
6
|
-
private oAuthService;
|
|
7
|
-
private environmentService;
|
|
8
|
-
private options;
|
|
9
|
-
constructor(oAuthService: OAuthService, environmentService: EnvironmentService, options: ABP.Root);
|
|
10
|
-
private listenToSetEnvironment;
|
|
11
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OAuthConfigurationHandler, never>;
|
|
12
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OAuthConfigurationHandler>;
|
|
13
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { OAuthService } from 'angular-oauth2-oidc';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class TimeoutLimitedOAuthService extends OAuthService {
|
|
4
|
-
protected calcTimeout(storedAt: number, expiration: number): number;
|
|
5
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TimeoutLimitedOAuthService, never>;
|
|
6
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<TimeoutLimitedOAuthService>;
|
|
7
|
-
}
|