@abp/ng.oauth 8.0.3 → 8.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,4 +8,4 @@ export const checkAccessToken = function (injector) {
8
8
  clearOAuthStorage();
9
9
  }
10
10
  };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYWNjZXNzLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi91dGlscy9jaGVjay1hY2Nlc3MtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQStCLFVBQVUsUUFBa0I7SUFDdEYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUN6RSxpQkFBaUIsRUFBRSxDQUFDO0tBQ3JCO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hlY2tBdXRoZW50aWNhdGlvblN0YXRlRm4sIENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBjbGVhck9BdXRoU3RvcmFnZSB9IGZyb20gJy4vY2xlYXItby1hdXRoLXN0b3JhZ2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNoZWNrQWNjZXNzVG9rZW46IENoZWNrQXV0aGVudGljYXRpb25TdGF0ZUZuID0gZnVuY3Rpb24gKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIGNvbnN0IGNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgY29uc3Qgb0F1dGggPSBpbmplY3Rvci5nZXQoT0F1dGhTZXJ2aWNlKTtcclxuICBpZiAob0F1dGguaGFzVmFsaWRBY2Nlc3NUb2tlbigpICYmICFjb25maWdTdGF0ZS5nZXREZWVwKCdjdXJyZW50VXNlci5pZCcpKSB7XHJcbiAgICBjbGVhck9BdXRoU3RvcmFnZSgpO1xyXG4gIH1cclxufTtcclxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYWNjZXNzLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi91dGlscy9jaGVjay1hY2Nlc3MtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQStCLFVBQVUsUUFBa0I7SUFDdEYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQzFFLGlCQUFpQixFQUFFLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoZWNrQXV0aGVudGljYXRpb25TdGF0ZUZuLCBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgY2xlYXJPQXV0aFN0b3JhZ2UgfSBmcm9tICcuL2NsZWFyLW8tYXV0aC1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBjb25zdCBjaGVja0FjY2Vzc1Rva2VuOiBDaGVja0F1dGhlbnRpY2F0aW9uU3RhdGVGbiA9IGZ1bmN0aW9uIChpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICBjb25zdCBjb25maWdTdGF0ZSA9IGluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGNvbnN0IG9BdXRoID0gaW5qZWN0b3IuZ2V0KE9BdXRoU2VydmljZSk7XHJcbiAgaWYgKG9BdXRoLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSAmJiAhY29uZmlnU3RhdGUuZ2V0RGVlcCgnY3VycmVudFVzZXIuaWQnKSkge1xyXG4gICAgY2xlYXJPQXV0aFN0b3JhZ2UoKTtcclxuICB9XHJcbn07XHJcbiJdfQ==
@@ -1,13 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, signal, Inject, inject, APP_INITIALIZER, NgModule } from '@angular/core';
2
+ import { inject, Injectable, signal, Inject, APP_INITIALIZER, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { HttpHeaders, HTTP_INTERCEPTORS } from '@angular/common/http';
5
5
  import * as i1 from 'angular-oauth2-oidc';
6
6
  import { OAuthService, OAuthErrorEvent, OAuthInfoEvent, OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
7
7
  import * as i2 from '@abp/ng.core';
8
- import { HttpErrorReporterService, EnvironmentService, ConfigStateService, SessionStateService, AbpLocalStorageService, TENANT_KEY, noop, AbstractAuthErrorFilter, CORE_OPTIONS, IS_EXTERNAL_REQUEST, AuthService, NAVIGATE_TO_MANAGE_PROFILE, AuthGuard, authGuard, ApiInterceptor, PIPE_TO_LOGIN_FN_KEY, CHECK_AUTHENTICATION_STATE_FN_KEY, AuthErrorFilterService } from '@abp/ng.core';
9
- import { of, from, pipe, lastValueFrom, EMPTY } from 'rxjs';
10
- import { filter, take, map, switchMap, tap, finalize } from 'rxjs/operators';
8
+ import { AbpLocalStorageService, ConfigStateService, AuthService, HttpErrorReporterService, EnvironmentService, SessionStateService, TENANT_KEY, noop, AbstractAuthErrorFilter, CORE_OPTIONS, IS_EXTERNAL_REQUEST, NAVIGATE_TO_MANAGE_PROFILE, AuthGuard, authGuard, ApiInterceptor, PIPE_TO_LOGIN_FN_KEY, CHECK_AUTHENTICATION_STATE_FN_KEY, AuthErrorFilterService } from '@abp/ng.core';
9
+ import { pipe, of, from, lastValueFrom, EMPTY } from 'rxjs';
10
+ import { switchMap, tap, filter, take, map, finalize } from 'rxjs/operators';
11
11
  import { Router } from '@angular/router';
12
12
  import compare from 'just-compare';
13
13
 
@@ -31,6 +31,66 @@ function clearOAuthStorage(storage = oAuthStorage) {
31
31
  keys.forEach(key => storage.removeItem(key));
32
32
  }
33
33
 
34
+ function storageFactory() {
35
+ return oAuthStorage;
36
+ }
37
+
38
+ class RememberMeService {
39
+ constructor() {
40
+ this.#rememberMe = 'remember_me';
41
+ this.localStorageService = inject(AbpLocalStorageService);
42
+ }
43
+ #rememberMe;
44
+ set(remember) {
45
+ this.localStorageService.setItem(this.#rememberMe, JSON.stringify(remember));
46
+ }
47
+ remove() {
48
+ this.localStorageService.removeItem(this.#rememberMe);
49
+ }
50
+ get() {
51
+ return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe)));
52
+ }
53
+ getFromToken(accessToken) {
54
+ const parsedToken = JSON.parse(atob(accessToken.split('.')[1]));
55
+ return Boolean(parsedToken[this.#rememberMe]);
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: RememberMeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
58
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: RememberMeService, providedIn: 'root' }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: RememberMeService, decorators: [{
61
+ type: Injectable,
62
+ args: [{
63
+ providedIn: 'root',
64
+ }]
65
+ }] });
66
+
67
+ const pipeToLogin = function (params, injector) {
68
+ const configState = injector.get(ConfigStateService);
69
+ const router = injector.get(Router);
70
+ const rememberMeService = injector.get(RememberMeService);
71
+ const authService = injector.get(AuthService);
72
+ return pipe(switchMap(() => configState.refreshAppState()), tap(() => {
73
+ rememberMeService.set(params.rememberMe ||
74
+ rememberMeService.get() ||
75
+ rememberMeService.getFromToken(authService.getAccessToken()));
76
+ if (params.redirectUrl)
77
+ router.navigate([params.redirectUrl]);
78
+ }));
79
+ };
80
+ //Ref: https://github.com/manfredsteyer/angular-oauth2-oidc/issues/1214
81
+ function isTokenExpired(expireDate) {
82
+ const currentDate = new Date().getTime();
83
+ return expireDate < currentDate;
84
+ }
85
+
86
+ const checkAccessToken = function (injector) {
87
+ const configState = injector.get(ConfigStateService);
88
+ const oAuth = injector.get(OAuthService);
89
+ if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {
90
+ clearOAuthStorage();
91
+ }
92
+ };
93
+
34
94
  class AuthFlowStrategy {
35
95
  constructor(injector) {
36
96
  this.injector = injector;
@@ -48,6 +108,7 @@ class AuthFlowStrategy {
48
108
  this.tenantKey = injector.get(TENANT_KEY);
49
109
  this.router = injector.get(Router);
50
110
  this.oAuthErrorFilterService = injector.get(OAuthErrorFilterService);
111
+ this.rememberMeService = injector.get(RememberMeService);
51
112
  this.listenToOauthErrors();
52
113
  }
53
114
  async init() {
@@ -64,10 +125,11 @@ class AuthFlowStrategy {
64
125
  return this.oAuthService
65
126
  .loadDiscoveryDocument()
66
127
  .then(() => {
67
- if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
68
- return Promise.resolve();
128
+ const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());
129
+ if (!isTokenExpire || this.oAuthService.getRefreshToken()) {
130
+ return this.refreshToken();
69
131
  }
70
- return this.refreshToken();
132
+ return Promise.resolve();
71
133
  })
72
134
  .catch(this.catchError);
73
135
  }
@@ -117,10 +179,25 @@ class AuthCodeFlowStrategy extends AuthFlowStrategy {
117
179
  this.isInternalAuth = false;
118
180
  }
119
181
  async init() {
182
+ this.checkRememberMeOption();
120
183
  return super
121
184
  .init()
122
185
  .then(() => this.oAuthService.tryLogin().catch(noop))
123
- .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));
186
+ .then(() => this.oAuthService.setupAutomaticSilentRefresh());
187
+ }
188
+ checkRememberMeOption() {
189
+ const accessToken = this.oAuthService.getAccessToken();
190
+ const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());
191
+ let rememberMe = this.rememberMeService.get();
192
+ if (accessToken && !rememberMe) {
193
+ const rememberMeValue = this.rememberMeService.getFromToken(accessToken);
194
+ this.rememberMeService.set(!!rememberMeValue);
195
+ }
196
+ rememberMe = this.rememberMeService.get();
197
+ if (accessToken && isTokenExpire && !rememberMe) {
198
+ this.rememberMeService.remove();
199
+ this.oAuthService.logOut();
200
+ }
124
201
  }
125
202
  navigateToLogin(queryParams) {
126
203
  let additionalState = '';
@@ -135,6 +212,7 @@ class AuthCodeFlowStrategy extends AuthFlowStrategy {
135
212
  return false;
136
213
  }
137
214
  logout(queryParams) {
215
+ this.rememberMeService.remove();
138
216
  return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));
139
217
  }
140
218
  login(queryParams) {
@@ -148,38 +226,10 @@ class AuthCodeFlowStrategy extends AuthFlowStrategy {
148
226
  }
149
227
  }
150
228
 
151
- const cookieKey = 'rememberMe';
152
- const storageKey = 'passwordFlow';
153
- const pipeToLogin = function (params, injector) {
154
- const configState = injector.get(ConfigStateService);
155
- const router = injector.get(Router);
156
- const localStorage = injector.get(AbpLocalStorageService);
157
- return pipe(switchMap(() => configState.refreshAppState()), tap(() => {
158
- setRememberMe(params.rememberMe, localStorage);
159
- if (params.redirectUrl)
160
- router.navigate([params.redirectUrl]);
161
- }));
162
- };
163
- function setRememberMe(remember, localStorageService) {
164
- removeRememberMe(localStorageService);
165
- localStorageService.setItem(storageKey, 'true');
166
- document.cookie = `${cookieKey}=true; path=/${remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''}`;
167
- }
168
- function removeRememberMe(localStorageService) {
169
- localStorageService.removeItem(storageKey);
170
- document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';
171
- }
172
-
173
- function getCookieValueByName(name) {
174
- const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
175
- return match ? match[2] : '';
176
- }
177
229
  class AuthPasswordFlowStrategy extends AuthFlowStrategy {
178
230
  constructor() {
179
231
  super(...arguments);
180
232
  this.isInternalAuth = true;
181
- this.cookieKey = 'rememberMe';
182
- this.storageKey = 'passwordFlow';
183
233
  }
184
234
  listenToTokenExpiration() {
185
235
  this.oAuthService.events
@@ -192,16 +242,23 @@ class AuthPasswordFlowStrategy extends AuthFlowStrategy {
192
242
  }
193
243
  else {
194
244
  this.oAuthService.logOut();
195
- removeRememberMe(this.localStorageService);
245
+ this.rememberMeService.remove();
196
246
  this.configState.refreshAppState().subscribe();
197
247
  }
198
248
  });
199
249
  }
200
250
  async init() {
201
- if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {
251
+ this.checkRememberMeOption();
252
+ return super.init().then(() => this.listenToTokenExpiration());
253
+ }
254
+ checkRememberMeOption() {
255
+ const accessToken = this.oAuthService.getAccessToken();
256
+ const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());
257
+ const rememberMe = this.rememberMeService.get();
258
+ if (accessToken && isTokenExpire && !rememberMe) {
259
+ this.rememberMeService.remove();
202
260
  this.oAuthService.logOut();
203
261
  }
204
- return super.init().then(() => this.listenToTokenExpiration());
205
262
  }
206
263
  navigateToLogin(queryParams) {
207
264
  const router = this.injector.get(Router);
@@ -218,14 +275,14 @@ class AuthPasswordFlowStrategy extends AuthFlowStrategy {
218
275
  const router = this.injector.get(Router);
219
276
  const noRedirectToLogoutUrl = true;
220
277
  return from(this.oAuthService.revokeTokenAndLogout(noRedirectToLogoutUrl)).pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
278
+ this.rememberMeService.remove();
221
279
  router.navigateByUrl('/');
222
- removeRememberMe(this.localStorageService);
223
280
  }));
224
281
  }
225
282
  refreshToken() {
226
283
  return this.oAuthService.refreshToken().catch(() => {
227
284
  clearOAuthStorage();
228
- removeRememberMe(this.localStorageService);
285
+ this.rememberMeService.remove();
229
286
  });
230
287
  }
231
288
  }
@@ -240,6 +297,12 @@ const AUTH_FLOW_STRATEGY = {
240
297
  };
241
298
 
242
299
  class AbpOAuthService {
300
+ get oidc() {
301
+ return this.oAuthService.oidc;
302
+ }
303
+ set oidc(value) {
304
+ this.oAuthService.oidc = value;
305
+ }
243
306
  get isInternalAuth() {
244
307
  return this.strategy.isInternalAuth;
245
308
  }
@@ -286,10 +349,22 @@ class AbpOAuthService {
286
349
  }
287
350
  return this.oAuthService.fetchTokenUsingGrant(grantType, p, headers);
288
351
  }
289
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
290
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthService, providedIn: 'root' }); }
352
+ getRefreshToken() {
353
+ return this.oAuthService.getRefreshToken();
354
+ }
355
+ getAccessToken() {
356
+ return this.oAuthService.getAccessToken();
357
+ }
358
+ refreshToken() {
359
+ return this.oAuthService.refreshToken();
360
+ }
361
+ getAccessTokenExpiration() {
362
+ return this.oAuthService.getAccessTokenExpiration();
363
+ }
364
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
365
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthService, providedIn: 'root' }); }
291
366
  }
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthService, decorators: [{
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthService, decorators: [{
293
368
  type: Injectable,
294
369
  args: [{
295
370
  providedIn: 'root',
@@ -328,10 +403,10 @@ class OAuthErrorFilterService extends AbstractAuthErrorFilter {
328
403
  .map(({ execute }) => execute(event))
329
404
  .some(item => item);
330
405
  }
331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthErrorFilterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
332
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthErrorFilterService, providedIn: 'root' }); }
406
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthErrorFilterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
407
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthErrorFilterService, providedIn: 'root' }); }
333
408
  }
334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthErrorFilterService, decorators: [{
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthErrorFilterService, decorators: [{
335
410
  type: Injectable,
336
411
  args: [{ providedIn: 'root' }]
337
412
  }] });
@@ -351,10 +426,10 @@ class OAuthConfigurationHandler {
351
426
  this.oAuthService.configure(config);
352
427
  });
353
428
  }
354
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthConfigurationHandler, deps: [{ token: i1.OAuthService }, { token: i2.EnvironmentService }, { token: CORE_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }
355
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' }); }
429
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthConfigurationHandler, deps: [{ token: i1.OAuthService }, { token: i2.EnvironmentService }, { token: CORE_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }
430
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' }); }
356
431
  }
357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{
432
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{
358
433
  type: Injectable,
359
434
  args: [{
360
435
  providedIn: 'root',
@@ -400,10 +475,10 @@ class OAuthApiInterceptor {
400
475
  headers['X-Requested-With'] = 'XMLHttpRequest';
401
476
  return headers;
402
477
  }
403
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthApiInterceptor, deps: [{ token: i1.OAuthService }, { token: i2.SessionStateService }, { token: i2.HttpWaitService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
404
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' }); }
478
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthApiInterceptor, deps: [{ token: i1.OAuthService }, { token: i2.SessionStateService }, { token: i2.HttpWaitService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
479
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' }); }
405
480
  }
406
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: OAuthApiInterceptor, decorators: [{
481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: OAuthApiInterceptor, decorators: [{
407
482
  type: Injectable,
408
483
  args: [{
409
484
  providedIn: 'root',
@@ -430,10 +505,10 @@ class AbpOAuthGuard {
430
505
  this.authService.navigateToLogin(params);
431
506
  return false;
432
507
  }
433
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
434
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' }); }
508
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
509
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' }); }
435
510
  }
436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthGuard, decorators: [{
511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthGuard, decorators: [{
437
512
  type: Injectable,
438
513
  args: [{
439
514
  providedIn: 'root',
@@ -468,18 +543,6 @@ const NavigateToManageProfileProvider = {
468
543
  },
469
544
  };
470
545
 
471
- function storageFactory() {
472
- return oAuthStorage;
473
- }
474
-
475
- const checkAccessToken = function (injector) {
476
- const configState = injector.get(ConfigStateService);
477
- const oAuth = injector.get(OAuthService);
478
- if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {
479
- clearOAuthStorage();
480
- }
481
- };
482
-
483
546
  class AbpOAuthModule {
484
547
  static forRoot() {
485
548
  return {
@@ -527,11 +590,11 @@ class AbpOAuthModule {
527
590
  ],
528
591
  };
529
592
  }
530
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
531
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] }); }
532
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] }); }
593
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
594
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] }); }
595
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] }); }
533
596
  }
534
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbpOAuthModule, decorators: [{
597
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AbpOAuthModule, decorators: [{
535
598
  type: NgModule,
536
599
  args: [{
537
600
  imports: [CommonModule, OAuthModule],
@@ -542,5 +605,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
542
605
  * Generated bundle index. Do not edit.
543
606
  */
544
607
 
545
- export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, OAuthErrorFilterService, abpOAuthGuard, checkAccessToken, clearOAuthStorage, oAuthStorage, pipeToLogin, removeRememberMe, setRememberMe, storageFactory };
608
+ export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, OAuthErrorFilterService, abpOAuthGuard, checkAccessToken, clearOAuthStorage, isTokenExpired, oAuthStorage, pipeToLogin, storageFactory };
546
609
  //# sourceMappingURL=abp-ng.oauth.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.oauth.mjs","sources":["../../../../packages/oauth/src/lib/utils/oauth-storage.ts","../../../../packages/oauth/src/lib/utils/clear-o-auth-storage.ts","../../../../packages/oauth/src/lib/strategies/auth-flow-strategy.ts","../../../../packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts","../../../../packages/oauth/src/lib/utils/auth-utils.ts","../../../../packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts","../../../../packages/oauth/src/lib/tokens/auth-flow-strategy.ts","../../../../packages/oauth/src/lib/services/oauth.service.ts","../../../../packages/oauth/src/lib/services/oauth-error-filter.service.ts","../../../../packages/oauth/src/lib/handlers/oauth-configuration.handler.ts","../../../../packages/oauth/src/lib/interceptors/api.interceptor.ts","../../../../packages/oauth/src/lib/guards/oauth.guard.ts","../../../../packages/oauth/src/lib/providers/navigate-to-manage-profile.provider.ts","../../../../packages/oauth/src/lib/utils/storage.factory.ts","../../../../packages/oauth/src/lib/utils/check-access-token.ts","../../../../packages/oauth/src/lib/oauth.module.ts","../../../../packages/oauth/src/abp-ng.oauth.ts"],"sourcesContent":["export const oAuthStorage = localStorage;\r\n","import { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { oAuthStorage } from './oauth-storage';\r\n\r\nexport function clearOAuthStorage(storage: OAuthStorage = oAuthStorage) {\r\n const keys = [\r\n 'access_token',\r\n 'id_token',\r\n 'refresh_token',\r\n 'nonce',\r\n 'PKCE_verifier',\r\n 'expires_at',\r\n 'id_token_claims_obj',\r\n 'id_token_expires_at',\r\n 'id_token_stored_at',\r\n 'access_token_stored_at',\r\n 'granted_scopes',\r\n 'session_state',\r\n ];\r\n\r\n keys.forEach(key => storage.removeItem(key));\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Params, Router } from '@angular/router';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport {\r\n AuthConfig,\r\n OAuthErrorEvent,\r\n OAuthService as OAuthService2,\r\n OAuthStorage,\r\n} from 'angular-oauth2-oidc';\r\n\r\nimport {\r\n AbpLocalStorageService,\r\n ConfigStateService,\r\n EnvironmentService,\r\n HttpErrorReporterService,\r\n LoginParams,\r\n SessionStateService,\r\n TENANT_KEY,\r\n} from '@abp/ng.core';\r\n\r\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\r\nimport { oAuthStorage } from '../utils/oauth-storage';\r\nimport { OAuthErrorFilterService } from '../services';\r\n\r\nexport abstract class AuthFlowStrategy {\r\n abstract readonly isInternalAuth: boolean;\r\n\r\n protected httpErrorReporter: HttpErrorReporterService;\r\n protected environment: EnvironmentService;\r\n protected configState: ConfigStateService;\r\n protected oAuthService: OAuthService2;\r\n protected oAuthConfig!: AuthConfig;\r\n protected sessionState: SessionStateService;\r\n protected localStorageService: AbpLocalStorageService;\r\n protected tenantKey: string;\r\n protected router: Router;\r\n\r\n protected readonly oAuthErrorFilterService: OAuthErrorFilterService;\r\n\r\n abstract checkIfInternalAuth(queryParams?: Params): boolean;\r\n abstract navigateToLogin(queryParams?: Params): void;\r\n abstract logout(queryParams?: Params): Observable<any>;\r\n abstract login(params?: LoginParams | Params): Observable<any>;\r\n\r\n private catchError = (err: HttpErrorResponse) => {\r\n this.httpErrorReporter.reportError(err);\r\n return of(null);\r\n };\r\n\r\n constructor(protected injector: Injector) {\r\n this.httpErrorReporter = injector.get(HttpErrorReporterService);\r\n this.environment = injector.get(EnvironmentService);\r\n this.configState = injector.get(ConfigStateService);\r\n this.oAuthService = injector.get(OAuthService2);\r\n this.sessionState = injector.get(SessionStateService);\r\n this.localStorageService = injector.get(AbpLocalStorageService);\r\n this.oAuthConfig = this.environment.getEnvironment().oAuthConfig || {};\r\n this.tenantKey = injector.get(TENANT_KEY);\r\n this.router = injector.get(Router);\r\n this.oAuthErrorFilterService = injector.get(OAuthErrorFilterService);\r\n\r\n this.listenToOauthErrors();\r\n }\r\n\r\n async init(): Promise<any> {\r\n if (this.oAuthConfig.clientId) {\r\n const shouldClear = shouldStorageClear(this.oAuthConfig.clientId, oAuthStorage);\r\n if (shouldClear) clearOAuthStorage(oAuthStorage);\r\n }\r\n\r\n this.oAuthService.configure(this.oAuthConfig);\r\n\r\n this.oAuthService.events\r\n .pipe(filter(event => event.type === 'token_refresh_error'))\r\n .subscribe(() => this.navigateToLogin());\r\n\r\n this.navigateToPreviousUrl();\r\n\r\n return this.oAuthService\r\n .loadDiscoveryDocument()\r\n .then(() => {\r\n if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.refreshToken();\r\n })\r\n .catch(this.catchError);\r\n }\r\n\r\n protected navigateToPreviousUrl(): void {\r\n const { responseType } = this.oAuthConfig;\r\n if (responseType === 'code') {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event.type === 'token_received' && !!this.oAuthService.state),\r\n take(1),\r\n map(() => {\r\n const redirectUri = decodeURIComponent(this.oAuthService.state);\r\n\r\n if (redirectUri && redirectUri !== '/') {\r\n return redirectUri;\r\n }\r\n\r\n return '/';\r\n }),\r\n switchMap(redirectUri =>\r\n this.configState.getOne$('currentUser').pipe(\r\n filter(user => !!user?.isAuthenticated),\r\n tap(() => this.router.navigateByUrl(redirectUri)),\r\n ),\r\n ),\r\n )\r\n .subscribe();\r\n }\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());\r\n }\r\n\r\n protected listenToOauthErrors() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event instanceof OAuthErrorEvent),\r\n tap((err: OAuthErrorEvent) => {\r\n const shouldSkip = this.oAuthErrorFilterService.run(err);\r\n if (!shouldSkip) {\r\n clearOAuthStorage();\r\n }\r\n }),\r\n switchMap(() => this.configState.refreshAppState()),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n\r\nfunction shouldStorageClear(clientId: string, storage: OAuthStorage): boolean {\r\n const key = 'abpOAuthClientId';\r\n if (!storage.getItem(key)) {\r\n storage.setItem(key, clientId);\r\n return false;\r\n }\r\n\r\n const shouldClear = storage.getItem(key) !== clientId;\r\n if (shouldClear) storage.setItem(key, clientId);\r\n return shouldClear;\r\n}\r\n","import { noop } from '@abp/ng.core';\r\nimport { Params } from '@angular/router';\r\nimport { from, of } from 'rxjs';\r\nimport { AuthFlowStrategy } from './auth-flow-strategy';\r\n\r\nexport class AuthCodeFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = false;\r\n\r\n async init() {\r\n return super\r\n .init()\r\n .then(() => this.oAuthService.tryLogin().catch(noop))\r\n .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n let additionalState = '';\r\n if (queryParams?.returnUrl) {\r\n additionalState = queryParams.returnUrl;\r\n }\r\n\r\n const cultureParams = this.getCultureParams(queryParams);\r\n this.oAuthService.initCodeFlow(additionalState, cultureParams);\r\n }\r\n\r\n checkIfInternalAuth(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return false;\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));\r\n }\r\n\r\n login(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return of(null);\r\n }\r\n\r\n private getCultureParams(queryParams?: Params) {\r\n const lang = this.sessionState.getLanguage();\r\n const culture = { culture: lang, 'ui-culture': lang };\r\n return { ...(lang && culture), ...queryParams };\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { pipe } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport {\r\n ConfigStateService,\r\n LoginParams,\r\n PipeToLoginFn,\r\n AbpLocalStorageService,\r\n} from '@abp/ng.core';\r\n\r\nconst cookieKey = 'rememberMe';\r\nconst storageKey = 'passwordFlow';\r\n\r\nexport const pipeToLogin: PipeToLoginFn = function (\r\n params: Pick<LoginParams, 'redirectUrl' | 'rememberMe'>,\r\n injector: Injector,\r\n) {\r\n const configState = injector.get(ConfigStateService);\r\n const router = injector.get(Router);\r\n const localStorage = injector.get(AbpLocalStorageService);\r\n return pipe(\r\n switchMap(() => configState.refreshAppState()),\r\n tap(() => {\r\n setRememberMe(params.rememberMe, localStorage);\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n};\r\n\r\nexport function setRememberMe(\r\n remember: boolean | undefined,\r\n localStorageService: AbpLocalStorageService,\r\n) {\r\n removeRememberMe(localStorageService);\r\n localStorageService.setItem(storageKey, 'true');\r\n document.cookie = `${cookieKey}=true; path=/${\r\n remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''\r\n }`;\r\n}\r\n\r\nexport function removeRememberMe(localStorageService: AbpLocalStorageService) {\r\n localStorageService.removeItem(storageKey);\r\n document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';\r\n}\r\n","import { filter, switchMap, tap } from 'rxjs/operators';\r\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\r\nimport { Params, Router } from '@angular/router';\r\nimport { from, Observable, pipe } from 'rxjs';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { AuthFlowStrategy } from './auth-flow-strategy';\r\nimport { pipeToLogin, removeRememberMe } from '../utils/auth-utils';\r\nimport { LoginParams } from '@abp/ng.core';\r\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\r\n\r\nfunction getCookieValueByName(name: string) {\r\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\r\n return match ? match[2] : '';\r\n}\r\n\r\nexport class AuthPasswordFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = true;\r\n private cookieKey = 'rememberMe';\r\n private storageKey = 'passwordFlow';\r\n\r\n private listenToTokenExpiration() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(\r\n event =>\r\n event instanceof OAuthInfoEvent &&\r\n event.type === 'token_expires' &&\r\n event.info === 'access_token',\r\n ),\r\n )\r\n .subscribe(() => {\r\n if (this.oAuthService.getRefreshToken()) {\r\n this.refreshToken();\r\n } else {\r\n this.oAuthService.logOut();\r\n removeRememberMe(this.localStorageService);\r\n this.configState.refreshAppState().subscribe();\r\n }\r\n });\r\n }\r\n\r\n async init() {\r\n if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {\r\n this.oAuthService.logOut();\r\n }\r\n\r\n return super.init().then(() => this.listenToTokenExpiration());\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n return router.navigate(['/account/login'], { queryParams });\r\n }\r\n\r\n checkIfInternalAuth() {\r\n return true;\r\n }\r\n\r\n login(params: LoginParams): Observable<any> {\r\n const tenant = this.sessionState.getTenant();\r\n\r\n return from(\r\n this.oAuthService.fetchTokenUsingPasswordFlow(\r\n params.username,\r\n params.password,\r\n new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }),\r\n ),\r\n ).pipe(pipeToLogin(params, this.injector));\r\n }\r\n logout() {\r\n const router = this.injector.get(Router);\r\n const noRedirectToLogoutUrl = true;\r\n return from(this.oAuthService.revokeTokenAndLogout(noRedirectToLogoutUrl)).pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n router.navigateByUrl('/');\r\n removeRememberMe(this.localStorageService);\r\n }),\r\n );\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => {\r\n clearOAuthStorage();\r\n removeRememberMe(this.localStorageService);\r\n });\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { AuthCodeFlowStrategy } from '../strategies/auth-code-flow-strategy';\r\nimport { AuthPasswordFlowStrategy } from '../strategies/auth-password-flow-strategy';\r\n\r\nexport const AUTH_FLOW_STRATEGY = {\r\n Code(injector: Injector) {\r\n return new AuthCodeFlowStrategy(injector);\r\n },\r\n Password(injector: Injector) {\r\n return new AuthPasswordFlowStrategy(injector);\r\n },\r\n};\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { from, Observable, lastValueFrom, EMPTY } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { AbpAuthResponse, IAuthService, LoginParams } from '@abp/ng.core';\r\nimport { AuthFlowStrategy } from '../strategies';\r\nimport { EnvironmentService } from '@abp/ng.core';\r\nimport { AUTH_FLOW_STRATEGY } from '../tokens/auth-flow-strategy';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthService implements IAuthService {\r\n private strategy!: AuthFlowStrategy;\r\n private readonly oAuthService: OAuthService;\r\n\r\n get isInternalAuth() {\r\n return this.strategy.isInternalAuth;\r\n }\r\n\r\n constructor(protected injector: Injector) {\r\n this.oAuthService = this.injector.get(OAuthService);\r\n }\r\n\r\n async init() {\r\n const environmentService = this.injector.get(EnvironmentService);\r\n\r\n const result$ = environmentService.getEnvironment$().pipe(\r\n map(env => env?.oAuthConfig),\r\n filter(Boolean),\r\n tap(oAuthConfig => {\r\n this.strategy =\r\n oAuthConfig.responseType === 'code'\r\n ? AUTH_FLOW_STRATEGY.Code(this.injector)\r\n : AUTH_FLOW_STRATEGY.Password(this.injector);\r\n }),\r\n switchMap(() => from(this.strategy.init())),\r\n take(1),\r\n );\r\n\r\n return await lastValueFrom(result$);\r\n }\r\n\r\n logout(queryParams?: Params): Observable<any> {\r\n if (!this.strategy) {\r\n return EMPTY;\r\n }\r\n\r\n return this.strategy.logout(queryParams);\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n this.strategy.navigateToLogin(queryParams);\r\n }\r\n\r\n login(params: LoginParams) {\r\n return this.strategy.login(params);\r\n }\r\n\r\n get isAuthenticated(): boolean {\r\n return this.oAuthService.hasValidAccessToken();\r\n }\r\n\r\n loginUsingGrant(\r\n grantType: string,\r\n parameters: object,\r\n headers?: HttpHeaders,\r\n ): Promise<AbpAuthResponse> {\r\n const { clientId: client_id, dummyClientSecret: client_secret } = this.oAuthService;\r\n const access_token = this.oAuthService.getAccessToken();\r\n const p = {\r\n access_token,\r\n grant_type: grantType,\r\n client_id,\r\n ...parameters,\r\n };\r\n\r\n if (client_secret) {\r\n p['client_secret'] = client_secret;\r\n }\r\n\r\n return this.oAuthService.fetchTokenUsingGrant(grantType, p, headers);\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { OAuthErrorEvent } from 'angular-oauth2-oidc';\r\nimport { AbstractAuthErrorFilter, AuthErrorFilter } from '@abp/ng.core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OAuthErrorFilterService extends AbstractAuthErrorFilter<\r\n AuthErrorFilter<OAuthErrorEvent>,\r\n OAuthErrorEvent\r\n> {\r\n protected readonly _filters = signal<Array<AuthErrorFilter<OAuthErrorEvent>>>([]);\r\n readonly filters = this._filters.asReadonly();\r\n\r\n get(id: string): AuthErrorFilter<OAuthErrorEvent> {\r\n return this._filters().find(({ id: _id }) => _id === id);\r\n }\r\n\r\n add(filter: AuthErrorFilter<OAuthErrorEvent>): void {\r\n this._filters.update(items => [...items, filter]);\r\n }\r\n\r\n patch(item: Partial<AuthErrorFilter<OAuthErrorEvent>>): void {\r\n const _item = this.filters().find(({ id }) => id === item.id);\r\n if (!_item) {\r\n return;\r\n }\r\n\r\n Object.assign(_item, item);\r\n }\r\n\r\n remove(id: string): void {\r\n const item = this.filters().find(({ id: _id }) => _id === id);\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this._filters.update(items => items.filter(({ id: _id }) => _id !== id));\r\n }\r\n\r\n run(event: OAuthErrorEvent): boolean {\r\n return this.filters()\r\n .filter(({ executable }) => !!executable)\r\n .map(({ execute }) => execute(event))\r\n .some(item => item);\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { AuthConfig, OAuthService } from \"angular-oauth2-oidc\";\r\nimport compare from 'just-compare';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ABP, EnvironmentService, CORE_OPTIONS } from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OAuthConfigurationHandler {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private environmentService: EnvironmentService,\r\n @Inject(CORE_OPTIONS) private options: ABP.Root,\r\n ) {\r\n this.listenToSetEnvironment();\r\n }\r\n\r\n private listenToSetEnvironment() {\r\n this.environmentService\r\n .createOnUpdateStream(state => state)\r\n .pipe(\r\n map(environment => environment.oAuthConfig as AuthConfig),\r\n filter(config => !compare(config, this.options.environment.oAuthConfig)),\r\n )\r\n .subscribe((config) => {\r\n this.oAuthService.configure(config);\r\n });\r\n }\r\n}\r\n","import { HttpHandler, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { finalize } from 'rxjs/operators';\r\nimport {\r\n HttpWaitService,\r\n IApiInterceptor,\r\n IS_EXTERNAL_REQUEST,\r\n SessionStateService,\r\n TENANT_KEY,\r\n} from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OAuthApiInterceptor implements IApiInterceptor {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private sessionState: SessionStateService,\r\n private httpWaitService: HttpWaitService,\r\n @Inject(TENANT_KEY) private tenantKey: string,\r\n ) {}\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler) {\r\n this.httpWaitService.addRequest(request);\r\n const isExternalRequest = request.context?.get(IS_EXTERNAL_REQUEST);\r\n const newRequest = isExternalRequest\r\n ? request\r\n : request.clone({\r\n setHeaders: this.getAdditionalHeaders(request.headers),\r\n });\r\n\r\n return next\r\n .handle(newRequest)\r\n .pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\r\n }\r\n\r\n getAdditionalHeaders(existingHeaders?: HttpHeaders) {\r\n const headers = {} as any;\r\n\r\n const token = this.oAuthService.getAccessToken();\r\n if (!existingHeaders?.has('Authorization') && token) {\r\n headers['Authorization'] = `Bearer ${token}`;\r\n }\r\n\r\n const lang = this.sessionState.getLanguage();\r\n if (!existingHeaders?.has('Accept-Language') && lang) {\r\n headers['Accept-Language'] = lang;\r\n }\r\n\r\n const tenant = this.sessionState.getTenant();\r\n if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {\r\n headers[this.tenantKey] = tenant.id;\r\n }\r\n\r\n headers['X-Requested-With'] = 'XMLHttpRequest';\r\n\r\n return headers;\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport {\r\n UrlTree,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n CanActivateFn,\r\n} from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\n\r\nimport { AuthService, IAbpGuard } from '@abp/ng.core';\r\n\r\n/**\r\n * @deprecated Use `abpOAuthGuard` *function* instead.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthGuard implements IAbpGuard {\r\n protected readonly oAuthService = inject(OAuthService);\r\n protected readonly authService = inject(AuthService);\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean> | boolean | UrlTree {\r\n const hasValidAccessToken = this.oAuthService.hasValidAccessToken();\r\n if (hasValidAccessToken) {\r\n return true;\r\n }\r\n\r\n const params = { returnUrl: state.url };\r\n this.authService.navigateToLogin(params);\r\n return false;\r\n }\r\n}\r\n\r\nexport const abpOAuthGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n) => {\r\n const oAuthService = inject(OAuthService);\r\n const authService = inject(AuthService);\r\n\r\n const hasValidAccessToken = oAuthService.hasValidAccessToken();\r\n\r\n if (hasValidAccessToken) {\r\n return true;\r\n }\r\n\r\n const params = { returnUrl: state.url };\r\n authService.navigateToLogin(params);\r\n return false;\r\n};\r\n","import { inject, Provider } from '@angular/core';\r\nimport { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';\r\n\r\nexport const NavigateToManageProfileProvider: Provider = {\r\n provide: NAVIGATE_TO_MANAGE_PROFILE,\r\n useFactory: () => {\r\n const environment = inject(EnvironmentService);\r\n\r\n return () => {\r\n const env = environment.getEnvironment();\r\n if (!env.oAuthConfig) {\r\n console.warn('The oAuthConfig env is missing on environment.ts');\r\n return;\r\n }\r\n\r\n const { issuer } = env.oAuthConfig;\r\n const path = issuer.endsWith('/') ? issuer : `${issuer}/`;\r\n window.open(`${path}Account/Manage?returnUrl=${window.location.href}`, '_self');\r\n };\r\n },\r\n};\r\n","import { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { oAuthStorage } from './oauth-storage';\r\n\r\nexport function storageFactory(): OAuthStorage {\r\n return oAuthStorage;\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { CheckAuthenticationStateFn, ConfigStateService } from '@abp/ng.core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { clearOAuthStorage } from './clear-o-auth-storage';\r\n\r\nexport const checkAccessToken: CheckAuthenticationStateFn = function (injector: Injector) {\r\n const configState = injector.get(ConfigStateService);\r\n const oAuth = injector.get(OAuthService);\r\n if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {\r\n clearOAuthStorage();\r\n }\r\n};\r\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule, Provider } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport {\r\n AbpLocalStorageService,\r\n ApiInterceptor,\r\n AuthErrorFilterService,\r\n AuthGuard,\r\n authGuard,\r\n AuthService,\r\n CHECK_AUTHENTICATION_STATE_FN_KEY,\r\n noop,\r\n PIPE_TO_LOGIN_FN_KEY,\r\n} from '@abp/ng.core';\r\nimport { AbpOAuthService, OAuthErrorFilterService } from './services';\r\nimport { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';\r\nimport { OAuthApiInterceptor } from './interceptors/api.interceptor';\r\nimport { AbpOAuthGuard, abpOAuthGuard } from './guards/oauth.guard';\r\nimport { NavigateToManageProfileProvider } from './providers';\r\nimport { checkAccessToken, pipeToLogin } from './utils';\r\n\r\n@NgModule({\r\n imports: [CommonModule, OAuthModule],\r\n})\r\nexport class AbpOAuthModule {\r\n static forRoot(): ModuleWithProviders<AbpOAuthModule> {\r\n return {\r\n ngModule: AbpOAuthModule,\r\n providers: [\r\n {\r\n provide: AuthService,\r\n useClass: AbpOAuthService,\r\n },\r\n {\r\n provide: AuthGuard,\r\n useClass: AbpOAuthGuard,\r\n },\r\n {\r\n provide: authGuard,\r\n useValue: abpOAuthGuard,\r\n },\r\n {\r\n provide: ApiInterceptor,\r\n useClass: OAuthApiInterceptor,\r\n },\r\n {\r\n provide: PIPE_TO_LOGIN_FN_KEY,\r\n useValue: pipeToLogin,\r\n },\r\n {\r\n provide: CHECK_AUTHENTICATION_STATE_FN_KEY,\r\n useValue: checkAccessToken,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useExisting: ApiInterceptor,\r\n multi: true,\r\n },\r\n NavigateToManageProfileProvider,\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [OAuthConfigurationHandler],\r\n useFactory: noop,\r\n },\r\n OAuthModule.forRoot().providers as Provider[],\r\n { provide: OAuthStorage, useClass: AbpLocalStorageService },\r\n { provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService },\r\n ],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["OAuthService2"],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.oauth.mjs","sources":["../../../../packages/oauth/src/lib/utils/oauth-storage.ts","../../../../packages/oauth/src/lib/utils/clear-o-auth-storage.ts","../../../../packages/oauth/src/lib/utils/storage.factory.ts","../../../../packages/oauth/src/lib/services/remember-me.service.ts","../../../../packages/oauth/src/lib/utils/auth-utils.ts","../../../../packages/oauth/src/lib/utils/check-access-token.ts","../../../../packages/oauth/src/lib/strategies/auth-flow-strategy.ts","../../../../packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts","../../../../packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts","../../../../packages/oauth/src/lib/tokens/auth-flow-strategy.ts","../../../../packages/oauth/src/lib/services/oauth.service.ts","../../../../packages/oauth/src/lib/services/oauth-error-filter.service.ts","../../../../packages/oauth/src/lib/handlers/oauth-configuration.handler.ts","../../../../packages/oauth/src/lib/interceptors/api.interceptor.ts","../../../../packages/oauth/src/lib/guards/oauth.guard.ts","../../../../packages/oauth/src/lib/providers/navigate-to-manage-profile.provider.ts","../../../../packages/oauth/src/lib/oauth.module.ts","../../../../packages/oauth/src/abp-ng.oauth.ts"],"sourcesContent":["export const oAuthStorage = localStorage;\r\n","import { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { oAuthStorage } from './oauth-storage';\r\n\r\nexport function clearOAuthStorage(storage: OAuthStorage = oAuthStorage) {\r\n const keys = [\r\n 'access_token',\r\n 'id_token',\r\n 'refresh_token',\r\n 'nonce',\r\n 'PKCE_verifier',\r\n 'expires_at',\r\n 'id_token_claims_obj',\r\n 'id_token_expires_at',\r\n 'id_token_stored_at',\r\n 'access_token_stored_at',\r\n 'granted_scopes',\r\n 'session_state',\r\n ];\r\n\r\n keys.forEach(key => storage.removeItem(key));\r\n}\r\n","import { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { oAuthStorage } from './oauth-storage';\r\n\r\nexport function storageFactory(): OAuthStorage {\r\n return oAuthStorage;\r\n}\r\n","import { AbpLocalStorageService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RememberMeService {\r\n readonly #rememberMe = 'remember_me';\r\n protected readonly localStorageService = inject(AbpLocalStorageService);\r\n\r\n set(remember: boolean) {\r\n this.localStorageService.setItem(this.#rememberMe, JSON.stringify(remember));\r\n }\r\n\r\n remove() {\r\n this.localStorageService.removeItem(this.#rememberMe);\r\n }\r\n\r\n get() {\r\n return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe)));\r\n }\r\n\r\n getFromToken(accessToken: string) {\r\n const parsedToken = JSON.parse(atob(accessToken.split('.')[1]));\r\n return Boolean(parsedToken[this.#rememberMe]);\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { pipe } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport {\r\n AuthService,\r\n ConfigStateService,\r\n LoginParams,\r\n PipeToLoginFn,\r\n} from '@abp/ng.core';\r\nimport { RememberMeService } from '../services/remember-me.service';\r\n\r\nexport const pipeToLogin: PipeToLoginFn = function (\r\n params: Pick<LoginParams, 'redirectUrl' | 'rememberMe'>,\r\n injector: Injector,\r\n) {\r\n const configState = injector.get(ConfigStateService);\r\n const router = injector.get(Router);\r\n const rememberMeService = injector.get(RememberMeService);\r\n const authService = injector.get(AuthService);\r\n return pipe(\r\n switchMap(() => configState.refreshAppState()),\r\n tap(() => {\r\n rememberMeService.set(\r\n params.rememberMe ||\r\n rememberMeService.get() ||\r\n rememberMeService.getFromToken(authService.getAccessToken())\r\n );\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n};\r\n\r\n//Ref: https://github.com/manfredsteyer/angular-oauth2-oidc/issues/1214\r\nexport function isTokenExpired(expireDate: number): boolean {\r\n const currentDate = new Date().getTime();\r\n return expireDate < currentDate;\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { CheckAuthenticationStateFn, ConfigStateService } from '@abp/ng.core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { clearOAuthStorage } from './clear-o-auth-storage';\r\n\r\nexport const checkAccessToken: CheckAuthenticationStateFn = function (injector: Injector) {\r\n const configState = injector.get(ConfigStateService);\r\n const oAuth = injector.get(OAuthService);\r\n if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {\r\n clearOAuthStorage();\r\n }\r\n};\r\n","import { Injector } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Params, Router } from '@angular/router';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport {\r\n AuthConfig,\r\n OAuthErrorEvent,\r\n OAuthService as OAuthService2,\r\n OAuthStorage,\r\n} from 'angular-oauth2-oidc';\r\n\r\nimport {\r\n AbpLocalStorageService,\r\n ConfigStateService,\r\n EnvironmentService,\r\n HttpErrorReporterService,\r\n LoginParams,\r\n SessionStateService,\r\n TENANT_KEY,\r\n} from '@abp/ng.core';\r\n\r\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\r\nimport { oAuthStorage } from '../utils/oauth-storage';\r\nimport { OAuthErrorFilterService } from '../services';\r\nimport { isTokenExpired } from '../utils';\r\nimport { RememberMeService } from '../services/remember-me.service';\r\n\r\nexport abstract class AuthFlowStrategy {\r\n abstract readonly isInternalAuth: boolean;\r\n\r\n protected httpErrorReporter: HttpErrorReporterService;\r\n protected environment: EnvironmentService;\r\n protected configState: ConfigStateService;\r\n protected oAuthService: OAuthService2;\r\n protected oAuthConfig!: AuthConfig;\r\n protected sessionState: SessionStateService;\r\n protected localStorageService: AbpLocalStorageService;\r\n protected rememberMeService: RememberMeService;\r\n protected tenantKey: string;\r\n protected router: Router;\r\n\r\n protected readonly oAuthErrorFilterService: OAuthErrorFilterService;\r\n\r\n abstract checkIfInternalAuth(queryParams?: Params): boolean;\r\n abstract navigateToLogin(queryParams?: Params): void;\r\n abstract logout(queryParams?: Params): Observable<any>;\r\n abstract login(params?: LoginParams | Params): Observable<any>;\r\n\r\n private catchError = (err: HttpErrorResponse) => {\r\n this.httpErrorReporter.reportError(err);\r\n return of(null);\r\n };\r\n\r\n constructor(protected injector: Injector) {\r\n this.httpErrorReporter = injector.get(HttpErrorReporterService);\r\n this.environment = injector.get(EnvironmentService);\r\n this.configState = injector.get(ConfigStateService);\r\n this.oAuthService = injector.get(OAuthService2);\r\n this.sessionState = injector.get(SessionStateService);\r\n this.localStorageService = injector.get(AbpLocalStorageService);\r\n this.oAuthConfig = this.environment.getEnvironment().oAuthConfig || {};\r\n this.tenantKey = injector.get(TENANT_KEY);\r\n this.router = injector.get(Router);\r\n this.oAuthErrorFilterService = injector.get(OAuthErrorFilterService);\r\n this.rememberMeService = injector.get(RememberMeService);\r\n\r\n this.listenToOauthErrors();\r\n }\r\n\r\n async init(): Promise<any> {\r\n if (this.oAuthConfig.clientId) {\r\n const shouldClear = shouldStorageClear(this.oAuthConfig.clientId, oAuthStorage);\r\n if (shouldClear) clearOAuthStorage(oAuthStorage);\r\n }\r\n this.oAuthService.configure(this.oAuthConfig);\r\n this.oAuthService.events\r\n .pipe(filter(event => event.type === 'token_refresh_error'))\r\n .subscribe(() => this.navigateToLogin());\r\n this.navigateToPreviousUrl();\r\n return this.oAuthService\r\n .loadDiscoveryDocument()\r\n .then(() => {\r\n const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());\r\n if (!isTokenExpire || this.oAuthService.getRefreshToken()) {\r\n return this.refreshToken();\r\n }\r\n\r\n return Promise.resolve();\r\n })\r\n .catch(this.catchError);\r\n }\r\n\r\n protected navigateToPreviousUrl(): void {\r\n const { responseType } = this.oAuthConfig;\r\n if (responseType === 'code') {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event.type === 'token_received' && !!this.oAuthService.state),\r\n take(1),\r\n map(() => {\r\n const redirectUri = decodeURIComponent(this.oAuthService.state);\r\n\r\n if (redirectUri && redirectUri !== '/') {\r\n return redirectUri;\r\n }\r\n\r\n return '/';\r\n }),\r\n switchMap(redirectUri =>\r\n this.configState.getOne$('currentUser').pipe(\r\n filter(user => !!user?.isAuthenticated),\r\n tap(() => this.router.navigateByUrl(redirectUri)),\r\n ),\r\n ),\r\n )\r\n .subscribe();\r\n }\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());\r\n }\r\n\r\n protected listenToOauthErrors() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event instanceof OAuthErrorEvent),\r\n tap((err: OAuthErrorEvent) => {\r\n const shouldSkip = this.oAuthErrorFilterService.run(err);\r\n if (!shouldSkip) {\r\n clearOAuthStorage();\r\n }\r\n }),\r\n switchMap(() => this.configState.refreshAppState()),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n\r\nfunction shouldStorageClear(clientId: string, storage: OAuthStorage): boolean {\r\n const key = 'abpOAuthClientId';\r\n if (!storage.getItem(key)) {\r\n storage.setItem(key, clientId);\r\n return false;\r\n }\r\n\r\n const shouldClear = storage.getItem(key) !== clientId;\r\n if (shouldClear) storage.setItem(key, clientId);\r\n return shouldClear;\r\n}\r\n","import { noop } from '@abp/ng.core';\r\nimport { Params } from '@angular/router';\r\nimport { from, of } from 'rxjs';\r\nimport { AuthFlowStrategy } from './auth-flow-strategy';\r\nimport { isTokenExpired } from '../utils';\r\n\r\nexport class AuthCodeFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = false;\r\n\r\n async init() {\r\n this.checkRememberMeOption();\r\n\r\n return super\r\n .init()\r\n .then(() => this.oAuthService.tryLogin().catch(noop))\r\n .then(() => this.oAuthService.setupAutomaticSilentRefresh());\r\n }\r\n\r\n private checkRememberMeOption() {\r\n const accessToken = this.oAuthService.getAccessToken();\r\n const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());\r\n let rememberMe = this.rememberMeService.get();\r\n\r\n if (accessToken && !rememberMe) {\r\n const rememberMeValue = this.rememberMeService.getFromToken(accessToken);\r\n\r\n this.rememberMeService.set(!!rememberMeValue);\r\n }\r\n\r\n rememberMe = this.rememberMeService.get();\r\n if (accessToken && isTokenExpire && !rememberMe) {\r\n this.rememberMeService.remove();\r\n this.oAuthService.logOut();\r\n }\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n let additionalState = '';\r\n if (queryParams?.returnUrl) {\r\n additionalState = queryParams.returnUrl;\r\n }\r\n\r\n const cultureParams = this.getCultureParams(queryParams);\r\n this.oAuthService.initCodeFlow(additionalState, cultureParams);\r\n }\r\n\r\n checkIfInternalAuth(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return false;\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n this.rememberMeService.remove();\r\n return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));\r\n }\r\n\r\n login(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return of(null);\r\n }\r\n\r\n private getCultureParams(queryParams?: Params) {\r\n const lang = this.sessionState.getLanguage();\r\n const culture = { culture: lang, 'ui-culture': lang };\r\n return { ...(lang && culture), ...queryParams };\r\n }\r\n}\r\n","import { filter, switchMap, tap } from 'rxjs/operators';\r\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\r\nimport { Params, Router } from '@angular/router';\r\nimport { from, Observable } from 'rxjs';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { AuthFlowStrategy } from './auth-flow-strategy';\r\nimport { isTokenExpired, pipeToLogin } from '../utils/auth-utils';\r\nimport { LoginParams } from '@abp/ng.core';\r\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\r\n\r\nexport class AuthPasswordFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = true;\r\n\r\n private listenToTokenExpiration() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(\r\n event => event instanceof OAuthInfoEvent &&\r\n event.type === 'token_expires' &&\r\n event.info === 'access_token'\r\n ),\r\n )\r\n .subscribe(() => {\r\n if (this.oAuthService.getRefreshToken()) {\r\n this.refreshToken();\r\n } else {\r\n this.oAuthService.logOut();\r\n this.rememberMeService.remove();\r\n this.configState.refreshAppState().subscribe();\r\n }\r\n });\r\n }\r\n\r\n async init() {\r\n this.checkRememberMeOption();\r\n\r\n return super.init().then(() => this.listenToTokenExpiration());\r\n }\r\n\r\n private checkRememberMeOption() {\r\n const accessToken = this.oAuthService.getAccessToken();\r\n const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());\r\n const rememberMe = this.rememberMeService.get();\r\n if (accessToken && isTokenExpire && !rememberMe) {\r\n this.rememberMeService.remove();\r\n this.oAuthService.logOut();\r\n }\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n return router.navigate(['/account/login'], { queryParams });\r\n }\r\n\r\n checkIfInternalAuth() {\r\n return true;\r\n }\r\n\r\n login(params: LoginParams): Observable<any> {\r\n const tenant = this.sessionState.getTenant();\r\n\r\n return from(\r\n this.oAuthService.fetchTokenUsingPasswordFlow(\r\n params.username,\r\n params.password,\r\n new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }),\r\n ),\r\n ).pipe(pipeToLogin(params, this.injector));\r\n }\r\n\r\n logout() {\r\n const router = this.injector.get(Router);\r\n const noRedirectToLogoutUrl = true;\r\n return from(this.oAuthService.revokeTokenAndLogout(noRedirectToLogoutUrl)).pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n this.rememberMeService.remove();\r\n router.navigateByUrl('/');\r\n }),\r\n );\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => {\r\n clearOAuthStorage();\r\n this.rememberMeService.remove();\r\n });\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { AuthCodeFlowStrategy } from '../strategies/auth-code-flow-strategy';\r\nimport { AuthPasswordFlowStrategy } from '../strategies/auth-password-flow-strategy';\r\n\r\nexport const AUTH_FLOW_STRATEGY = {\r\n Code(injector: Injector) {\r\n return new AuthCodeFlowStrategy(injector);\r\n },\r\n Password(injector: Injector) {\r\n return new AuthPasswordFlowStrategy(injector);\r\n },\r\n};\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { from, Observable, lastValueFrom, EMPTY } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { AbpAuthResponse, IAuthService, LoginParams } from '@abp/ng.core';\r\nimport { AuthFlowStrategy } from '../strategies';\r\nimport { EnvironmentService } from '@abp/ng.core';\r\nimport { AUTH_FLOW_STRATEGY } from '../tokens/auth-flow-strategy';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthService implements IAuthService {\r\n private strategy!: AuthFlowStrategy;\r\n private readonly oAuthService: OAuthService;\r\n\r\n get oidc() {\r\n return this.oAuthService.oidc;\r\n }\r\n\r\n set oidc(value) {\r\n this.oAuthService.oidc = value;\r\n }\r\n\r\n get isInternalAuth() {\r\n return this.strategy.isInternalAuth;\r\n }\r\n\r\n constructor(protected injector: Injector) {\r\n this.oAuthService = this.injector.get(OAuthService);\r\n }\r\n\r\n async init() {\r\n const environmentService = this.injector.get(EnvironmentService);\r\n\r\n const result$ = environmentService.getEnvironment$().pipe(\r\n map(env => env?.oAuthConfig),\r\n filter(Boolean),\r\n tap(oAuthConfig => {\r\n this.strategy =\r\n oAuthConfig.responseType === 'code'\r\n ? AUTH_FLOW_STRATEGY.Code(this.injector)\r\n : AUTH_FLOW_STRATEGY.Password(this.injector);\r\n }),\r\n switchMap(() => from(this.strategy.init())),\r\n take(1),\r\n );\r\n\r\n return await lastValueFrom(result$);\r\n }\r\n\r\n logout(queryParams?: Params): Observable<any> {\r\n if (!this.strategy) {\r\n return EMPTY;\r\n }\r\n\r\n return this.strategy.logout(queryParams);\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n this.strategy.navigateToLogin(queryParams);\r\n }\r\n\r\n login(params: LoginParams) {\r\n return this.strategy.login(params);\r\n }\r\n\r\n get isAuthenticated(): boolean {\r\n return this.oAuthService.hasValidAccessToken();\r\n }\r\n\r\n loginUsingGrant(\r\n grantType: string,\r\n parameters: object,\r\n headers?: HttpHeaders,\r\n ): Promise<AbpAuthResponse> {\r\n const { clientId: client_id, dummyClientSecret: client_secret } = this.oAuthService;\r\n const access_token = this.oAuthService.getAccessToken();\r\n const p = {\r\n access_token,\r\n grant_type: grantType,\r\n client_id,\r\n ...parameters,\r\n };\r\n\r\n if (client_secret) {\r\n p['client_secret'] = client_secret;\r\n }\r\n\r\n return this.oAuthService.fetchTokenUsingGrant(grantType, p, headers);\r\n }\r\n\r\n getRefreshToken(): string {\r\n return this.oAuthService.getRefreshToken();\r\n }\r\n\r\n getAccessToken(): string {\r\n return this.oAuthService.getAccessToken();\r\n }\r\n\r\n refreshToken(): Promise<AbpAuthResponse> {\r\n return this.oAuthService.refreshToken();\r\n }\r\n\r\n getAccessTokenExpiration(): number {\r\n return this.oAuthService.getAccessTokenExpiration();\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { OAuthErrorEvent } from 'angular-oauth2-oidc';\r\nimport { AbstractAuthErrorFilter, AuthErrorFilter } from '@abp/ng.core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OAuthErrorFilterService extends AbstractAuthErrorFilter<\r\n AuthErrorFilter<OAuthErrorEvent>,\r\n OAuthErrorEvent\r\n> {\r\n protected readonly _filters = signal<Array<AuthErrorFilter<OAuthErrorEvent>>>([]);\r\n readonly filters = this._filters.asReadonly();\r\n\r\n get(id: string): AuthErrorFilter<OAuthErrorEvent> {\r\n return this._filters().find(({ id: _id }) => _id === id);\r\n }\r\n\r\n add(filter: AuthErrorFilter<OAuthErrorEvent>): void {\r\n this._filters.update(items => [...items, filter]);\r\n }\r\n\r\n patch(item: Partial<AuthErrorFilter<OAuthErrorEvent>>): void {\r\n const _item = this.filters().find(({ id }) => id === item.id);\r\n if (!_item) {\r\n return;\r\n }\r\n\r\n Object.assign(_item, item);\r\n }\r\n\r\n remove(id: string): void {\r\n const item = this.filters().find(({ id: _id }) => _id === id);\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this._filters.update(items => items.filter(({ id: _id }) => _id !== id));\r\n }\r\n\r\n run(event: OAuthErrorEvent): boolean {\r\n return this.filters()\r\n .filter(({ executable }) => !!executable)\r\n .map(({ execute }) => execute(event))\r\n .some(item => item);\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { AuthConfig, OAuthService } from \"angular-oauth2-oidc\";\r\nimport compare from 'just-compare';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ABP, EnvironmentService, CORE_OPTIONS } from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OAuthConfigurationHandler {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private environmentService: EnvironmentService,\r\n @Inject(CORE_OPTIONS) private options: ABP.Root,\r\n ) {\r\n this.listenToSetEnvironment();\r\n }\r\n\r\n private listenToSetEnvironment() {\r\n this.environmentService\r\n .createOnUpdateStream(state => state)\r\n .pipe(\r\n map(environment => environment.oAuthConfig as AuthConfig),\r\n filter(config => !compare(config, this.options.environment.oAuthConfig)),\r\n )\r\n .subscribe((config) => {\r\n this.oAuthService.configure(config);\r\n });\r\n }\r\n}\r\n","import { HttpHandler, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { finalize } from 'rxjs/operators';\r\nimport {\r\n HttpWaitService,\r\n IApiInterceptor,\r\n IS_EXTERNAL_REQUEST,\r\n SessionStateService,\r\n TENANT_KEY,\r\n} from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OAuthApiInterceptor implements IApiInterceptor {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private sessionState: SessionStateService,\r\n private httpWaitService: HttpWaitService,\r\n @Inject(TENANT_KEY) private tenantKey: string,\r\n ) {}\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler) {\r\n this.httpWaitService.addRequest(request);\r\n const isExternalRequest = request.context?.get(IS_EXTERNAL_REQUEST);\r\n const newRequest = isExternalRequest\r\n ? request\r\n : request.clone({\r\n setHeaders: this.getAdditionalHeaders(request.headers),\r\n });\r\n\r\n return next\r\n .handle(newRequest)\r\n .pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\r\n }\r\n\r\n getAdditionalHeaders(existingHeaders?: HttpHeaders) {\r\n const headers = {} as any;\r\n\r\n const token = this.oAuthService.getAccessToken();\r\n if (!existingHeaders?.has('Authorization') && token) {\r\n headers['Authorization'] = `Bearer ${token}`;\r\n }\r\n\r\n const lang = this.sessionState.getLanguage();\r\n if (!existingHeaders?.has('Accept-Language') && lang) {\r\n headers['Accept-Language'] = lang;\r\n }\r\n\r\n const tenant = this.sessionState.getTenant();\r\n if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {\r\n headers[this.tenantKey] = tenant.id;\r\n }\r\n\r\n headers['X-Requested-With'] = 'XMLHttpRequest';\r\n\r\n return headers;\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport {\r\n UrlTree,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n CanActivateFn,\r\n} from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\n\r\nimport { AuthService, IAbpGuard } from '@abp/ng.core';\r\n\r\n/**\r\n * @deprecated Use `abpOAuthGuard` *function* instead.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthGuard implements IAbpGuard {\r\n protected readonly oAuthService = inject(OAuthService);\r\n protected readonly authService = inject(AuthService);\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean> | boolean | UrlTree {\r\n const hasValidAccessToken = this.oAuthService.hasValidAccessToken();\r\n if (hasValidAccessToken) {\r\n return true;\r\n }\r\n\r\n const params = { returnUrl: state.url };\r\n this.authService.navigateToLogin(params);\r\n return false;\r\n }\r\n}\r\n\r\nexport const abpOAuthGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n) => {\r\n const oAuthService = inject(OAuthService);\r\n const authService = inject(AuthService);\r\n\r\n const hasValidAccessToken = oAuthService.hasValidAccessToken();\r\n\r\n if (hasValidAccessToken) {\r\n return true;\r\n }\r\n\r\n const params = { returnUrl: state.url };\r\n authService.navigateToLogin(params);\r\n return false;\r\n};\r\n","import { inject, Provider } from '@angular/core';\r\nimport { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';\r\n\r\nexport const NavigateToManageProfileProvider: Provider = {\r\n provide: NAVIGATE_TO_MANAGE_PROFILE,\r\n useFactory: () => {\r\n const environment = inject(EnvironmentService);\r\n\r\n return () => {\r\n const env = environment.getEnvironment();\r\n if (!env.oAuthConfig) {\r\n console.warn('The oAuthConfig env is missing on environment.ts');\r\n return;\r\n }\r\n\r\n const { issuer } = env.oAuthConfig;\r\n const path = issuer.endsWith('/') ? issuer : `${issuer}/`;\r\n window.open(`${path}Account/Manage?returnUrl=${window.location.href}`, '_self');\r\n };\r\n },\r\n};\r\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule, Provider } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport {\r\n AbpLocalStorageService,\r\n ApiInterceptor,\r\n AuthErrorFilterService,\r\n AuthGuard,\r\n authGuard,\r\n AuthService,\r\n CHECK_AUTHENTICATION_STATE_FN_KEY,\r\n noop,\r\n PIPE_TO_LOGIN_FN_KEY,\r\n} from '@abp/ng.core';\r\nimport { AbpOAuthService, OAuthErrorFilterService } from './services';\r\nimport { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';\r\nimport { OAuthApiInterceptor } from './interceptors/api.interceptor';\r\nimport { AbpOAuthGuard, abpOAuthGuard } from './guards/oauth.guard';\r\nimport { NavigateToManageProfileProvider } from './providers';\r\nimport { checkAccessToken, pipeToLogin } from './utils';\r\n\r\n@NgModule({\r\n imports: [CommonModule, OAuthModule],\r\n})\r\nexport class AbpOAuthModule {\r\n static forRoot(): ModuleWithProviders<AbpOAuthModule> {\r\n return {\r\n ngModule: AbpOAuthModule,\r\n providers: [\r\n {\r\n provide: AuthService,\r\n useClass: AbpOAuthService,\r\n },\r\n {\r\n provide: AuthGuard,\r\n useClass: AbpOAuthGuard,\r\n },\r\n {\r\n provide: authGuard,\r\n useValue: abpOAuthGuard,\r\n },\r\n {\r\n provide: ApiInterceptor,\r\n useClass: OAuthApiInterceptor,\r\n },\r\n {\r\n provide: PIPE_TO_LOGIN_FN_KEY,\r\n useValue: pipeToLogin,\r\n },\r\n {\r\n provide: CHECK_AUTHENTICATION_STATE_FN_KEY,\r\n useValue: checkAccessToken,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useExisting: ApiInterceptor,\r\n multi: true,\r\n },\r\n NavigateToManageProfileProvider,\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [OAuthConfigurationHandler],\r\n useFactory: noop,\r\n },\r\n OAuthModule.forRoot().providers as Provider[],\r\n { provide: OAuthStorage, useClass: AbpLocalStorageService },\r\n { provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService },\r\n ],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["OAuthService2"],"mappings":"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"}
@@ -8,6 +8,8 @@ export declare class AbpOAuthService implements IAuthService {
8
8
  protected injector: Injector;
9
9
  private strategy;
10
10
  private readonly oAuthService;
11
+ get oidc(): boolean;
12
+ set oidc(value: boolean);
11
13
  get isInternalAuth(): boolean;
12
14
  constructor(injector: Injector);
13
15
  init(): Promise<any>;
@@ -16,6 +18,10 @@ export declare class AbpOAuthService implements IAuthService {
16
18
  login(params: LoginParams): Observable<any>;
17
19
  get isAuthenticated(): boolean;
18
20
  loginUsingGrant(grantType: string, parameters: object, headers?: HttpHeaders): Promise<AbpAuthResponse>;
21
+ getRefreshToken(): string;
22
+ getAccessToken(): string;
23
+ refreshToken(): Promise<AbpAuthResponse>;
24
+ getAccessTokenExpiration(): number;
19
25
  static ɵfac: i0.ɵɵFactoryDeclaration<AbpOAuthService, never>;
20
26
  static ɵprov: i0.ɵɵInjectableDeclaration<AbpOAuthService>;
21
27
  }