@abp/ng.oauth 7.0.0-rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +7 -0
  2. package/esm2020/abp-ng.oauth.mjs +5 -0
  3. package/esm2020/lib/guards/index.mjs +2 -0
  4. package/esm2020/lib/guards/oauth.guard.mjs +29 -0
  5. package/esm2020/lib/handlers/index.mjs +2 -0
  6. package/esm2020/lib/handlers/oauth-configuration.handler.mjs +36 -0
  7. package/esm2020/lib/interceptors/api.interceptor.mjs +52 -0
  8. package/esm2020/lib/interceptors/index.mjs +2 -0
  9. package/esm2020/lib/oauth.module.mjs +70 -0
  10. package/esm2020/lib/providers/index.mjs +2 -0
  11. package/esm2020/lib/providers/navigate-to-manage-profile.provider.mjs +17 -0
  12. package/esm2020/lib/services/index.mjs +2 -0
  13. package/esm2020/lib/services/oauth.service.mjs +48 -0
  14. package/esm2020/lib/strategies/auth-code-flow-strategy.mjs +35 -0
  15. package/esm2020/lib/strategies/auth-flow-strategy.mjs +61 -0
  16. package/esm2020/lib/strategies/auth-password-flow-strategy.mjs +67 -0
  17. package/esm2020/lib/strategies/index.mjs +4 -0
  18. package/esm2020/lib/tokens/auth-flow-strategy.mjs +11 -0
  19. package/esm2020/lib/tokens/index.mjs +2 -0
  20. package/esm2020/lib/utils/auth-utils.mjs +42 -0
  21. package/esm2020/lib/utils/check-access-token.mjs +11 -0
  22. package/esm2020/lib/utils/clear-o-auth-storage.mjs +19 -0
  23. package/esm2020/lib/utils/index.mjs +6 -0
  24. package/esm2020/lib/utils/oauth-storage.mjs +2 -0
  25. package/esm2020/lib/utils/storage.factory.mjs +5 -0
  26. package/esm2020/public-api.mjs +10 -0
  27. package/fesm2015/abp-ng.oauth.mjs +469 -0
  28. package/fesm2015/abp-ng.oauth.mjs.map +1 -0
  29. package/fesm2020/abp-ng.oauth.mjs +451 -0
  30. package/fesm2020/abp-ng.oauth.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/guards/index.d.ts +1 -0
  33. package/lib/guards/oauth.guard.d.ts +13 -0
  34. package/lib/handlers/index.d.ts +1 -0
  35. package/lib/handlers/oauth-configuration.handler.d.ts +12 -0
  36. package/lib/interceptors/api.interceptor.d.ts +15 -0
  37. package/lib/interceptors/index.d.ts +1 -0
  38. package/lib/oauth.module.d.ts +10 -0
  39. package/lib/providers/index.d.ts +1 -0
  40. package/lib/providers/navigate-to-manage-profile.provider.d.ts +2 -0
  41. package/lib/services/index.d.ts +1 -0
  42. package/lib/services/oauth.service.d.ts +20 -0
  43. package/lib/strategies/auth-code-flow-strategy.d.ts +11 -0
  44. package/lib/strategies/auth-flow-strategy.d.ts +25 -0
  45. package/lib/strategies/auth-password-flow-strategy.d.ts +184 -0
  46. package/lib/strategies/index.d.ts +3 -0
  47. package/lib/tokens/auth-flow-strategy.d.ts +7 -0
  48. package/lib/tokens/index.d.ts +1 -0
  49. package/lib/utils/auth-utils.d.ts +6 -0
  50. package/lib/utils/check-access-token.d.ts +2 -0
  51. package/lib/utils/clear-o-auth-storage.d.ts +2 -0
  52. package/lib/utils/index.d.ts +5 -0
  53. package/lib/utils/oauth-storage.d.ts +1 -0
  54. package/lib/utils/storage.factory.d.ts +2 -0
  55. package/package.json +40 -0
  56. package/public-api.d.ts +9 -0
@@ -0,0 +1,451 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Inject, inject, APP_INITIALIZER, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import * as i1 from 'angular-oauth2-oidc';
5
+ import { OAuthService, OAuthErrorEvent, OAuthStorage, OAuthInfoEvent, OAuthModule } from 'angular-oauth2-oidc';
6
+ import * as i2 from '@abp/ng.core';
7
+ import { HttpErrorReporterService, EnvironmentService, ConfigStateService, SessionStateService, TENANT_KEY, noop, CORE_OPTIONS, NAVIGATE_TO_MANAGE_PROFILE, AuthService, AuthGuard, ApiInterceptor, PIPE_TO_LOGIN_FN_KEY, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, CHECK_AUTHENTICATION_STATE_FN_KEY } from '@abp/ng.core';
8
+ import { of, from, pipe, lastValueFrom } from 'rxjs';
9
+ import { filter, tap, switchMap, map, take, finalize } from 'rxjs/operators';
10
+ import { Router } from '@angular/router';
11
+ import { HttpHeaders, HTTP_INTERCEPTORS } from '@angular/common/http';
12
+ import compare from 'just-compare';
13
+
14
+ const oAuthStorage = localStorage;
15
+
16
+ function storageFactory() {
17
+ return oAuthStorage;
18
+ }
19
+
20
+ function clearOAuthStorage(storage = oAuthStorage) {
21
+ const keys = [
22
+ 'access_token',
23
+ 'id_token',
24
+ 'refresh_token',
25
+ 'nonce',
26
+ 'PKCE_verifier',
27
+ 'expires_at',
28
+ 'id_token_claims_obj',
29
+ 'id_token_expires_at',
30
+ 'id_token_stored_at',
31
+ 'access_token_stored_at',
32
+ 'granted_scopes',
33
+ 'session_state',
34
+ ];
35
+ keys.forEach(key => storage.removeItem(key));
36
+ }
37
+
38
+ class AuthFlowStrategy {
39
+ constructor(injector) {
40
+ this.injector = injector;
41
+ this.catchError = err => {
42
+ this.httpErrorReporter.reportError(err);
43
+ return of(null);
44
+ };
45
+ this.httpErrorReporter = injector.get(HttpErrorReporterService);
46
+ this.environment = injector.get(EnvironmentService);
47
+ this.configState = injector.get(ConfigStateService);
48
+ this.oAuthService = injector.get(OAuthService);
49
+ this.sessionState = injector.get(SessionStateService);
50
+ this.oAuthConfig = this.environment.getEnvironment().oAuthConfig;
51
+ this.tenantKey = injector.get(TENANT_KEY);
52
+ this.listenToOauthErrors();
53
+ }
54
+ async init() {
55
+ const shouldClear = shouldStorageClear(this.environment.getEnvironment().oAuthConfig.clientId, oAuthStorage);
56
+ if (shouldClear)
57
+ clearOAuthStorage(oAuthStorage);
58
+ this.oAuthService.configure(this.oAuthConfig);
59
+ this.oAuthService.events
60
+ .pipe(filter(event => event.type === 'token_refresh_error'))
61
+ .subscribe(() => this.navigateToLogin());
62
+ return this.oAuthService
63
+ .loadDiscoveryDocument()
64
+ .then(() => {
65
+ if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
66
+ return Promise.resolve();
67
+ }
68
+ return this.refreshToken();
69
+ })
70
+ .catch(this.catchError);
71
+ }
72
+ refreshToken() {
73
+ return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());
74
+ }
75
+ listenToOauthErrors() {
76
+ this.oAuthService.events
77
+ .pipe(filter(event => event instanceof OAuthErrorEvent), tap(() => clearOAuthStorage()), switchMap(() => this.configState.refreshAppState()))
78
+ .subscribe();
79
+ }
80
+ }
81
+ function shouldStorageClear(clientId, storage) {
82
+ const key = 'abpOAuthClientId';
83
+ if (!storage.getItem(key)) {
84
+ storage.setItem(key, clientId);
85
+ return false;
86
+ }
87
+ const shouldClear = storage.getItem(key) !== clientId;
88
+ if (shouldClear)
89
+ storage.setItem(key, clientId);
90
+ return shouldClear;
91
+ }
92
+
93
+ class AuthCodeFlowStrategy extends AuthFlowStrategy {
94
+ constructor() {
95
+ super(...arguments);
96
+ this.isInternalAuth = false;
97
+ }
98
+ async init() {
99
+ return super
100
+ .init()
101
+ .then(() => this.oAuthService.tryLogin().catch(noop))
102
+ .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));
103
+ }
104
+ navigateToLogin(queryParams) {
105
+ this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
106
+ }
107
+ checkIfInternalAuth(queryParams) {
108
+ this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
109
+ return false;
110
+ }
111
+ logout(queryParams) {
112
+ return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));
113
+ }
114
+ login(queryParams) {
115
+ this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));
116
+ return of(null);
117
+ }
118
+ getCultureParams(queryParams) {
119
+ const lang = this.sessionState.getLanguage();
120
+ const culture = { culture: lang, 'ui-culture': lang };
121
+ return { ...(lang && culture), ...queryParams };
122
+ }
123
+ }
124
+
125
+ const cookieKey = 'rememberMe';
126
+ const storageKey = 'passwordFlow';
127
+ const pipeToLogin = function (params, injector) {
128
+ const configState = injector.get(ConfigStateService);
129
+ const router = injector.get(Router);
130
+ return pipe(switchMap(() => configState.refreshAppState()), tap(() => {
131
+ setRememberMe(params.rememberMe);
132
+ if (params.redirectUrl)
133
+ router.navigate([params.redirectUrl]);
134
+ }));
135
+ };
136
+ const setTokenResponseToStorage = function (injector, tokenRes) {
137
+ const { access_token, refresh_token, scope: grantedScopes, expires_in } = tokenRes;
138
+ const storage = injector.get(OAuthStorage);
139
+ storage.setItem('access_token', access_token);
140
+ storage.setItem('refresh_token', refresh_token);
141
+ storage.setItem('access_token_stored_at', '' + Date.now());
142
+ if (grantedScopes) {
143
+ storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' ')));
144
+ }
145
+ if (expires_in) {
146
+ const expiresInMilliSeconds = expires_in * 1000;
147
+ const now = new Date();
148
+ const expiresAt = now.getTime() + expiresInMilliSeconds;
149
+ storage.setItem('expires_at', '' + expiresAt);
150
+ }
151
+ };
152
+ function setRememberMe(remember) {
153
+ removeRememberMe();
154
+ localStorage.setItem(storageKey, 'true');
155
+ document.cookie = `${cookieKey}=true; path=/${remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''}`;
156
+ }
157
+ function removeRememberMe() {
158
+ localStorage.removeItem(storageKey);
159
+ document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';
160
+ }
161
+
162
+ function getCookieValueByName(name) {
163
+ const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
164
+ return match ? match[2] : '';
165
+ }
166
+ class AuthPasswordFlowStrategy extends AuthFlowStrategy {
167
+ constructor() {
168
+ super(...arguments);
169
+ this.isInternalAuth = true;
170
+ this.cookieKey = 'rememberMe';
171
+ this.storageKey = 'passwordFlow';
172
+ }
173
+ listenToTokenExpiration() {
174
+ this.oAuthService.events
175
+ .pipe(filter(event => event instanceof OAuthInfoEvent &&
176
+ event.type === 'token_expires' &&
177
+ event.info === 'access_token'))
178
+ .subscribe(() => {
179
+ if (this.oAuthService.getRefreshToken()) {
180
+ this.refreshToken();
181
+ }
182
+ else {
183
+ this.oAuthService.logOut();
184
+ removeRememberMe();
185
+ this.configState.refreshAppState().subscribe();
186
+ }
187
+ });
188
+ }
189
+ async init() {
190
+ if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {
191
+ this.oAuthService.logOut();
192
+ }
193
+ return super.init().then(() => this.listenToTokenExpiration());
194
+ }
195
+ navigateToLogin(queryParams) {
196
+ const router = this.injector.get(Router);
197
+ return router.navigate(['/account/login'], { queryParams });
198
+ }
199
+ checkIfInternalAuth() {
200
+ return true;
201
+ }
202
+ login(params) {
203
+ const tenant = this.sessionState.getTenant();
204
+ return from(this.oAuthService.fetchTokenUsingPasswordFlow(params.username, params.password, new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }))).pipe(pipeToLogin(params, this.injector));
205
+ }
206
+ logout(queryParams) {
207
+ const router = this.injector.get(Router);
208
+ return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
209
+ router.navigateByUrl('/');
210
+ removeRememberMe();
211
+ }));
212
+ }
213
+ refreshToken() {
214
+ return this.oAuthService.refreshToken().catch(() => {
215
+ clearOAuthStorage();
216
+ removeRememberMe();
217
+ });
218
+ }
219
+ }
220
+
221
+ const AUTH_FLOW_STRATEGY = {
222
+ Code(injector) {
223
+ return new AuthCodeFlowStrategy(injector);
224
+ },
225
+ Password(injector) {
226
+ return new AuthPasswordFlowStrategy(injector);
227
+ },
228
+ };
229
+
230
+ class AbpOAuthService {
231
+ constructor(injector, oAuthService) {
232
+ this.injector = injector;
233
+ this.oAuthService = oAuthService;
234
+ }
235
+ get isInternalAuth() {
236
+ return this.strategy.isInternalAuth;
237
+ }
238
+ async init() {
239
+ const environmentService = this.injector.get(EnvironmentService);
240
+ const result$ = environmentService.getEnvironment$().pipe(map(env => env?.oAuthConfig), filter(oAuthConfig => !!oAuthConfig), tap(oAuthConfig => {
241
+ this.strategy =
242
+ oAuthConfig.responseType === 'code'
243
+ ? AUTH_FLOW_STRATEGY.Code(this.injector)
244
+ : AUTH_FLOW_STRATEGY.Password(this.injector);
245
+ }), switchMap(() => from(this.strategy.init())), take(1));
246
+ return await lastValueFrom(result$);
247
+ }
248
+ logout(queryParams) {
249
+ return this.strategy.logout(queryParams);
250
+ }
251
+ navigateToLogin(queryParams) {
252
+ this.strategy.navigateToLogin(queryParams);
253
+ }
254
+ login(params) {
255
+ return this.strategy.login(params);
256
+ }
257
+ get isAuthenticated() {
258
+ return this.oAuthService.hasValidAccessToken();
259
+ }
260
+ }
261
+ AbpOAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthService, deps: [{ token: i0.Injector }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
262
+ AbpOAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthService, providedIn: 'root' });
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthService, decorators: [{
264
+ type: Injectable,
265
+ args: [{
266
+ providedIn: 'root',
267
+ }]
268
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.OAuthService }]; } });
269
+
270
+ class OAuthConfigurationHandler {
271
+ constructor(oAuthService, environmentService, options) {
272
+ this.oAuthService = oAuthService;
273
+ this.environmentService = environmentService;
274
+ this.options = options;
275
+ this.listenToSetEnvironment();
276
+ }
277
+ listenToSetEnvironment() {
278
+ this.environmentService
279
+ .createOnUpdateStream(state => state)
280
+ .pipe(map(environment => environment.oAuthConfig), filter(config => !compare(config, this.options.environment.oAuthConfig)))
281
+ .subscribe(config => {
282
+ this.oAuthService.configure(config);
283
+ });
284
+ }
285
+ }
286
+ OAuthConfigurationHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthConfigurationHandler, deps: [{ token: i1.OAuthService }, { token: i2.EnvironmentService }, { token: CORE_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
287
+ OAuthConfigurationHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' });
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{
289
+ type: Injectable,
290
+ args: [{
291
+ providedIn: 'root',
292
+ }]
293
+ }], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.EnvironmentService }, { type: undefined, decorators: [{
294
+ type: Inject,
295
+ args: [CORE_OPTIONS]
296
+ }] }]; } });
297
+
298
+ class OAuthApiInterceptor {
299
+ constructor(oAuthService, sessionState, httpWaitService, tenantKey) {
300
+ this.oAuthService = oAuthService;
301
+ this.sessionState = sessionState;
302
+ this.httpWaitService = httpWaitService;
303
+ this.tenantKey = tenantKey;
304
+ }
305
+ intercept(request, next) {
306
+ this.httpWaitService.addRequest(request);
307
+ return next
308
+ .handle(request.clone({
309
+ setHeaders: this.getAdditionalHeaders(request.headers),
310
+ }))
311
+ .pipe(finalize(() => this.httpWaitService.deleteRequest(request)));
312
+ }
313
+ getAdditionalHeaders(existingHeaders) {
314
+ const headers = {};
315
+ const token = this.oAuthService.getAccessToken();
316
+ if (!existingHeaders?.has('Authorization') && token) {
317
+ headers['Authorization'] = `Bearer ${token}`;
318
+ }
319
+ const lang = this.sessionState.getLanguage();
320
+ if (!existingHeaders?.has('Accept-Language') && lang) {
321
+ headers['Accept-Language'] = lang;
322
+ }
323
+ const tenant = this.sessionState.getTenant();
324
+ if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {
325
+ headers[this.tenantKey] = tenant.id;
326
+ }
327
+ headers['X-Requested-With'] = 'XMLHttpRequest';
328
+ return headers;
329
+ }
330
+ }
331
+ OAuthApiInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthApiInterceptor, deps: [{ token: i1.OAuthService }, { token: i2.SessionStateService }, { token: i2.HttpWaitService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
332
+ OAuthApiInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' });
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: OAuthApiInterceptor, decorators: [{
334
+ type: Injectable,
335
+ args: [{
336
+ providedIn: 'root',
337
+ }]
338
+ }], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.SessionStateService }, { type: i2.HttpWaitService }, { type: undefined, decorators: [{
339
+ type: Inject,
340
+ args: [TENANT_KEY]
341
+ }] }]; } });
342
+
343
+ class AbpOAuthGuard {
344
+ constructor(oauthService, authService) {
345
+ this.oauthService = oauthService;
346
+ this.authService = authService;
347
+ }
348
+ canActivate() {
349
+ const hasValidAccessToken = this.oauthService.hasValidAccessToken();
350
+ if (hasValidAccessToken) {
351
+ return true;
352
+ }
353
+ this.authService.navigateToLogin();
354
+ return false;
355
+ }
356
+ }
357
+ AbpOAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthGuard, deps: [{ token: i1.OAuthService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
358
+ AbpOAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' });
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthGuard, decorators: [{
360
+ type: Injectable,
361
+ args: [{
362
+ providedIn: 'root',
363
+ }]
364
+ }], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.AuthService }]; } });
365
+
366
+ const NavigateToManageProfileProvider = {
367
+ provide: NAVIGATE_TO_MANAGE_PROFILE,
368
+ useFactory: () => {
369
+ const environment = inject(EnvironmentService);
370
+ return () => {
371
+ const env = environment.getEnvironment();
372
+ if (!env.oAuthConfig) {
373
+ console.warn('The oAuthConfig env is missing on environment.ts');
374
+ return;
375
+ }
376
+ window.open(`${env.oAuthConfig.issuer}/Account/Manage?returnUrl=${window.location.href}`, '_self');
377
+ };
378
+ },
379
+ };
380
+
381
+ const checkAccessToken = function (injector) {
382
+ const configState = injector.get(ConfigStateService);
383
+ const oAuth = injector.get(OAuthService);
384
+ if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {
385
+ clearOAuthStorage();
386
+ }
387
+ };
388
+
389
+ class AbpOAuthModule {
390
+ static forRoot() {
391
+ return {
392
+ ngModule: AbpOAuthModule,
393
+ providers: [
394
+ {
395
+ provide: AuthService,
396
+ useClass: AbpOAuthService,
397
+ },
398
+ {
399
+ provide: AuthGuard,
400
+ useClass: AbpOAuthGuard,
401
+ },
402
+ {
403
+ provide: ApiInterceptor,
404
+ useClass: OAuthApiInterceptor,
405
+ },
406
+ {
407
+ provide: PIPE_TO_LOGIN_FN_KEY,
408
+ useValue: pipeToLogin,
409
+ },
410
+ {
411
+ provide: SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY,
412
+ useValue: setTokenResponseToStorage,
413
+ },
414
+ {
415
+ provide: CHECK_AUTHENTICATION_STATE_FN_KEY,
416
+ useValue: checkAccessToken,
417
+ },
418
+ {
419
+ provide: HTTP_INTERCEPTORS,
420
+ useExisting: ApiInterceptor,
421
+ multi: true,
422
+ },
423
+ NavigateToManageProfileProvider,
424
+ {
425
+ provide: APP_INITIALIZER,
426
+ multi: true,
427
+ deps: [OAuthConfigurationHandler],
428
+ useFactory: noop,
429
+ },
430
+ OAuthModule.forRoot().providers,
431
+ { provide: OAuthStorage, useFactory: storageFactory },
432
+ ],
433
+ };
434
+ }
435
+ }
436
+ AbpOAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
437
+ AbpOAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] });
438
+ AbpOAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, imports: [CommonModule, OAuthModule] });
439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpOAuthModule, decorators: [{
440
+ type: NgModule,
441
+ args: [{
442
+ imports: [CommonModule, OAuthModule],
443
+ }]
444
+ }] });
445
+
446
+ /**
447
+ * Generated bundle index. Do not edit.
448
+ */
449
+
450
+ export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, checkAccessToken, clearOAuthStorage, oAuthStorage, pipeToLogin, removeRememberMe, setRememberMe, setTokenResponseToStorage, storageFactory };
451
+ //# sourceMappingURL=abp-ng.oauth.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abp-ng.oauth.mjs","sources":["../../../../packages/oauth/src/lib/utils/oauth-storage.ts","../../../../packages/oauth/src/lib/utils/storage.factory.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/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/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 storageFactory(): OAuthStorage {\r\n return oAuthStorage;\r\n}\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 { Params } from '@angular/router';\r\nimport {\r\n AuthConfig,\r\n OAuthErrorEvent,\r\n OAuthService as OAuthService2,\r\n OAuthStorage,\r\n} from 'angular-oauth2-oidc';\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, switchMap, tap } from 'rxjs/operators';\r\nimport {\r\n LoginParams,\r\n ConfigStateService,\r\n EnvironmentService,\r\n HttpErrorReporterService,\r\n SessionStateService,\r\n TENANT_KEY,\r\n} from '@abp/ng.core';\r\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\r\nimport { oAuthStorage } from '../utils/oauth-storage';\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 tenantKey: string;\r\n\r\n abstract checkIfInternalAuth(queryParams?: Params): boolean;\r\n\r\n abstract navigateToLogin(queryParams?: Params): void;\r\n\r\n abstract logout(queryParams?: Params): Observable<any>;\r\n\r\n abstract login(params?: LoginParams | Params): Observable<any>;\r\n\r\n private catchError = err => {\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.oAuthConfig = this.environment.getEnvironment().oAuthConfig;\r\n this.tenantKey = injector.get(TENANT_KEY);\r\n\r\n this.listenToOauthErrors();\r\n }\r\n\r\n async init(): Promise<any> {\r\n const shouldClear = shouldStorageClear(\r\n this.environment.getEnvironment().oAuthConfig.clientId,\r\n oAuthStorage,\r\n );\r\n if (shouldClear) clearOAuthStorage(oAuthStorage);\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 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 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(() => clearOAuthStorage()),\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 this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\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 { OAuthStorage, TokenResponse } from 'angular-oauth2-oidc';\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 SetTokenResponseToStorageFn,\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\r\n return pipe(\r\n switchMap(() => configState.refreshAppState()),\r\n tap(() => {\r\n setRememberMe(params.rememberMe);\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n};\r\n\r\nexport const setTokenResponseToStorage: SetTokenResponseToStorageFn<TokenResponse> = function (\r\n injector: Injector,\r\n tokenRes: TokenResponse,\r\n) {\r\n const { access_token, refresh_token, scope: grantedScopes, expires_in } = tokenRes;\r\n const storage = injector.get(OAuthStorage);\r\n\r\n storage.setItem('access_token', access_token);\r\n storage.setItem('refresh_token', refresh_token);\r\n storage.setItem('access_token_stored_at', '' + Date.now());\r\n\r\n if (grantedScopes) {\r\n storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' ')));\r\n }\r\n\r\n if (expires_in) {\r\n const expiresInMilliSeconds = expires_in * 1000;\r\n const now = new Date();\r\n const expiresAt = now.getTime() + expiresInMilliSeconds;\r\n storage.setItem('expires_at', '' + expiresAt);\r\n }\r\n};\r\n\r\nexport function setRememberMe(remember: boolean) {\r\n removeRememberMe();\r\n localStorage.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() {\r\n localStorage.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, setRememberMe } 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();\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(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n\r\n return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n router.navigateByUrl('/');\r\n removeRememberMe();\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();\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 } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { 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\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthService implements IAuthService {\r\n private strategy: AuthFlowStrategy;\r\n\r\n get isInternalAuth() {\r\n return this.strategy.isInternalAuth;\r\n }\r\n\r\n constructor(protected injector: Injector, private oAuthService: OAuthService) {}\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(oAuthConfig => !!oAuthConfig),\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 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","import { Inject, Injectable } from '@angular/core';\r\nimport { 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),\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 { SessionStateService, HttpWaitService, TENANT_KEY, IApiInterceptor } 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 return next\r\n .handle(\r\n request.clone({\r\n setHeaders: this.getAdditionalHeaders(request.headers),\r\n }),\r\n )\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 } from '@angular/core';\r\nimport { CanActivate, UrlTree } from '@angular/router';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService, IAuthGuard } from '@abp/ng.core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthGuard implements CanActivate, IAuthGuard {\r\n constructor(private oauthService: OAuthService, private authService: AuthService) {}\r\n\r\n canActivate(): 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 this.authService.navigateToLogin();\r\n return false;\r\n }\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 window.open(\r\n `${env.oAuthConfig.issuer}/Account/Manage?returnUrl=${window.location.href}`,\r\n '_self',\r\n );\r\n };\r\n },\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, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport {\r\n ApiInterceptor,\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 SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY,\r\n} from '@abp/ng.core';\r\nimport { storageFactory } from './utils/storage.factory';\r\nimport { AbpOAuthService } from './services';\r\nimport { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { OAuthApiInterceptor } from './interceptors/api.interceptor';\r\nimport { AbpOAuthGuard } from './guards/oauth.guard';\r\nimport { NavigateToManageProfileProvider } from './providers';\r\nimport { checkAccessToken, pipeToLogin, setTokenResponseToStorage } 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: 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: SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY,\r\n useValue: setTokenResponseToStorage,\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,\r\n { provide: OAuthStorage, useFactory: storageFactory },\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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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@abp/ng.oauth" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export * from './oauth.guard';
@@ -0,0 +1,13 @@
1
+ import { CanActivate, UrlTree } from '@angular/router';
2
+ import { OAuthService } from 'angular-oauth2-oidc';
3
+ import { Observable } from 'rxjs';
4
+ import { AuthService, IAuthGuard } from '@abp/ng.core';
5
+ import * as i0 from "@angular/core";
6
+ export declare class AbpOAuthGuard implements CanActivate, IAuthGuard {
7
+ private oauthService;
8
+ private authService;
9
+ constructor(oauthService: OAuthService, authService: AuthService);
10
+ canActivate(): Observable<boolean> | boolean | UrlTree;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbpOAuthGuard, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<AbpOAuthGuard>;
13
+ }
@@ -0,0 +1 @@
1
+ export * from './oauth-configuration.handler';
@@ -0,0 +1,12 @@
1
+ import { OAuthService } from 'angular-oauth2-oidc';
2
+ import { ABP, EnvironmentService } from '@abp/ng.core';
3
+ import * as i0 from "@angular/core";
4
+ export declare class OAuthConfigurationHandler {
5
+ private oAuthService;
6
+ private environmentService;
7
+ private options;
8
+ constructor(oAuthService: OAuthService, environmentService: EnvironmentService, options: ABP.Root);
9
+ private listenToSetEnvironment;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<OAuthConfigurationHandler, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<OAuthConfigurationHandler>;
12
+ }
@@ -0,0 +1,15 @@
1
+ import { HttpHandler, HttpHeaders, HttpRequest } from '@angular/common/http';
2
+ import { OAuthService } from 'angular-oauth2-oidc';
3
+ import { SessionStateService, HttpWaitService, IApiInterceptor } from '@abp/ng.core';
4
+ import * as i0 from "@angular/core";
5
+ export declare class OAuthApiInterceptor implements IApiInterceptor {
6
+ private oAuthService;
7
+ private sessionState;
8
+ private httpWaitService;
9
+ private tenantKey;
10
+ constructor(oAuthService: OAuthService, sessionState: SessionStateService, httpWaitService: HttpWaitService, tenantKey: string);
11
+ intercept(request: HttpRequest<any>, next: HttpHandler): import("rxjs").Observable<import("@angular/common/http").HttpEvent<any>>;
12
+ getAdditionalHeaders(existingHeaders?: HttpHeaders): any;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<OAuthApiInterceptor, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<OAuthApiInterceptor>;
15
+ }
@@ -0,0 +1 @@
1
+ export * from './api.interceptor';
@@ -0,0 +1,10 @@
1
+ import { ModuleWithProviders } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "angular-oauth2-oidc";
5
+ export declare class AbpOAuthModule {
6
+ static forRoot(): ModuleWithProviders<AbpOAuthModule>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbpOAuthModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AbpOAuthModule, never, [typeof i1.CommonModule, typeof i2.OAuthModule], never>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<AbpOAuthModule>;
10
+ }
@@ -0,0 +1 @@
1
+ export * from './navigate-to-manage-profile.provider';
@@ -0,0 +1,2 @@
1
+ import { Provider } from '@angular/core';
2
+ export declare const NavigateToManageProfileProvider: Provider;
@@ -0,0 +1 @@
1
+ export * from './oauth.service';
@@ -0,0 +1,20 @@
1
+ import { Injector } from '@angular/core';
2
+ import { Params } from '@angular/router';
3
+ import { Observable } from 'rxjs';
4
+ import { IAuthService, LoginParams } from '@abp/ng.core';
5
+ import { OAuthService } from 'angular-oauth2-oidc';
6
+ import * as i0 from "@angular/core";
7
+ export declare class AbpOAuthService implements IAuthService {
8
+ protected injector: Injector;
9
+ private oAuthService;
10
+ private strategy;
11
+ get isInternalAuth(): boolean;
12
+ constructor(injector: Injector, oAuthService: OAuthService);
13
+ init(): Promise<any>;
14
+ logout(queryParams?: Params): Observable<any>;
15
+ navigateToLogin(queryParams?: Params): void;
16
+ login(params: LoginParams): Observable<any>;
17
+ get isAuthenticated(): boolean;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbpOAuthService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<AbpOAuthService>;
20
+ }
@@ -0,0 +1,11 @@
1
+ import { Params } from '@angular/router';
2
+ import { AuthFlowStrategy } from './auth-flow-strategy';
3
+ export declare class AuthCodeFlowStrategy extends AuthFlowStrategy {
4
+ readonly isInternalAuth = false;
5
+ init(): Promise<void>;
6
+ navigateToLogin(queryParams?: Params): void;
7
+ checkIfInternalAuth(queryParams?: Params): boolean;
8
+ logout(queryParams?: Params): import("rxjs").Observable<any>;
9
+ login(queryParams?: Params): import("rxjs").Observable<null>;
10
+ private getCultureParams;
11
+ }