@abp/ng.oauth 10.0.1 → 10.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.
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injectable, PLATFORM_ID, RESPONSE_INIT, InjectionToken, REQUEST, Optional, Inject, DOCUMENT, Injector, signal, provideAppInitializer, makeEnvironmentProviders, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, Injectable, PLATFORM_ID, RESPONSE_INIT, InjectionToken, REQUEST, Optional, Inject, DOCUMENT, Injector, signal, DestroyRef, provideAppInitializer, makeEnvironmentProviders, NgModule } from '@angular/core';
|
|
3
3
|
import { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE, AuthService, CORE_OPTIONS, SessionStateService, HttpWaitService, TENANT_KEY, IS_EXTERNAL_REQUEST, APP_STARTED_WITH_SSR, AbpLocalStorageService, AbpCookieStorageService, ConfigStateService, HttpErrorReporterService, AbpWindowService, noop, AbstractAuthErrorFilter, AuthGuard, authGuard, asyncAuthGuard, ApiInterceptor, PIPE_TO_LOGIN_FN_KEY, CHECK_AUTHENTICATION_STATE_FN_KEY, AuthErrorFilterService } from '@abp/ng.core';
|
|
4
4
|
import { HttpHeaders, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
5
5
|
import { OAuthService, OAuthStorage, OAuthErrorEvent, OAuthInfoEvent, OAuthModule } from 'angular-oauth2-oidc';
|
|
6
|
-
import { firstValueFrom, timer, map, filter, take, timeout, catchError, of, pipe, tap as tap$1, from, lastValueFrom, EMPTY } from 'rxjs';
|
|
6
|
+
import { firstValueFrom, timer, map, filter, take, timeout, catchError, of, pipe, tap as tap$1, from, lastValueFrom, EMPTY, fromEvent } from 'rxjs';
|
|
7
7
|
import { isPlatformServer, isPlatformBrowser } from '@angular/common';
|
|
8
8
|
import compare from 'just-compare';
|
|
9
9
|
import { map as map$1, filter as filter$1, finalize, switchMap, tap, take as take$1 } from 'rxjs/operators';
|
|
10
10
|
import { Router } from '@angular/router';
|
|
11
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
11
12
|
|
|
12
13
|
const NavigateToManageProfileProvider = {
|
|
13
14
|
provide: NAVIGATE_TO_MANAGE_PROFILE,
|
|
@@ -43,10 +44,10 @@ class AbpOAuthGuard {
|
|
|
43
44
|
this.authService.navigateToLogin(params);
|
|
44
45
|
return false;
|
|
45
46
|
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' }); }
|
|
48
49
|
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthGuard, decorators: [{
|
|
50
51
|
type: Injectable,
|
|
51
52
|
args: [{
|
|
52
53
|
providedIn: 'root',
|
|
@@ -132,10 +133,10 @@ class OAuthConfigurationHandler {
|
|
|
132
133
|
this.oAuthService.configure(config);
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
136
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
136
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthConfigurationHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
137
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' }); }
|
|
137
138
|
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{
|
|
139
140
|
type: Injectable,
|
|
140
141
|
args: [{
|
|
141
142
|
providedIn: 'root',
|
|
@@ -178,10 +179,10 @@ class OAuthApiInterceptor {
|
|
|
178
179
|
headers['X-Requested-With'] = 'XMLHttpRequest';
|
|
179
180
|
return headers;
|
|
180
181
|
}
|
|
181
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
182
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthApiInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
183
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' }); }
|
|
183
184
|
}
|
|
184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthApiInterceptor, decorators: [{
|
|
185
186
|
type: Injectable,
|
|
186
187
|
args: [{
|
|
187
188
|
providedIn: 'root',
|
|
@@ -234,10 +235,10 @@ class ServerTokenStorageService {
|
|
|
234
235
|
}
|
|
235
236
|
setItem(_k, _v) { }
|
|
236
237
|
removeItem(_k) { }
|
|
237
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
238
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
238
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ServerTokenStorageService, deps: [{ token: REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
239
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ServerTokenStorageService, providedIn: null }); }
|
|
239
240
|
}
|
|
240
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ServerTokenStorageService, decorators: [{
|
|
241
242
|
type: Injectable,
|
|
242
243
|
args: [{ providedIn: null }]
|
|
243
244
|
}], ctorParameters: () => [{ type: Request, decorators: [{
|
|
@@ -278,7 +279,7 @@ function oAuthStorageFactory() {
|
|
|
278
279
|
? inject(BrowserTokenStorageService)
|
|
279
280
|
: inject(ServerTokenStorageService);
|
|
280
281
|
}
|
|
281
|
-
return inject(
|
|
282
|
+
return inject(MemoryTokenStorageService);
|
|
282
283
|
}
|
|
283
284
|
|
|
284
285
|
class RememberMeService {
|
|
@@ -322,10 +323,10 @@ class RememberMeService {
|
|
|
322
323
|
return false;
|
|
323
324
|
}
|
|
324
325
|
}
|
|
325
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
326
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
326
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RememberMeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
327
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RememberMeService, providedIn: 'root' }); }
|
|
327
328
|
}
|
|
328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RememberMeService, decorators: [{
|
|
329
330
|
type: Injectable,
|
|
330
331
|
args: [{
|
|
331
332
|
providedIn: 'root',
|
|
@@ -696,15 +697,21 @@ class AbpOAuthService {
|
|
|
696
697
|
this.document.defaultView?.location.replace('/authorize');
|
|
697
698
|
return Promise.resolve();
|
|
698
699
|
}
|
|
699
|
-
|
|
700
|
+
try {
|
|
701
|
+
return this.oAuthService.refreshToken();
|
|
702
|
+
}
|
|
703
|
+
catch (error) {
|
|
704
|
+
console.log("Error while refreshing token: ", error);
|
|
705
|
+
return Promise.reject();
|
|
706
|
+
}
|
|
700
707
|
}
|
|
701
708
|
getAccessTokenExpiration() {
|
|
702
709
|
return this.oAuthService.getAccessTokenExpiration();
|
|
703
710
|
}
|
|
704
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
705
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
711
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
712
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthService, providedIn: 'root' }); }
|
|
706
713
|
}
|
|
707
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
714
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthService, decorators: [{
|
|
708
715
|
type: Injectable,
|
|
709
716
|
args: [{
|
|
710
717
|
providedIn: 'root',
|
|
@@ -714,7 +721,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
|
|
|
714
721
|
class OAuthErrorFilterService extends AbstractAuthErrorFilter {
|
|
715
722
|
constructor() {
|
|
716
723
|
super(...arguments);
|
|
717
|
-
this._filters = signal([]);
|
|
724
|
+
this._filters = signal([], ...(ngDevMode ? [{ debugName: "_filters" }] : []));
|
|
718
725
|
this.filters = this._filters.asReadonly();
|
|
719
726
|
}
|
|
720
727
|
get(id) {
|
|
@@ -743,10 +750,10 @@ class OAuthErrorFilterService extends AbstractAuthErrorFilter {
|
|
|
743
750
|
.map(({ execute }) => execute(event))
|
|
744
751
|
.some(item => item);
|
|
745
752
|
}
|
|
746
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
747
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
753
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthErrorFilterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
754
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthErrorFilterService, providedIn: 'root' }); }
|
|
748
755
|
}
|
|
749
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OAuthErrorFilterService, decorators: [{
|
|
750
757
|
type: Injectable,
|
|
751
758
|
args: [{ providedIn: 'root' }]
|
|
752
759
|
}] });
|
|
@@ -778,16 +785,243 @@ class BrowserTokenStorageService {
|
|
|
778
785
|
return;
|
|
779
786
|
document.cookie = `${name}=; Max-Age=0; path=/;`;
|
|
780
787
|
}
|
|
781
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
782
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
788
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BrowserTokenStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
789
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BrowserTokenStorageService, providedIn: 'root' }); }
|
|
783
790
|
}
|
|
784
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
791
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BrowserTokenStorageService, decorators: [{
|
|
785
792
|
type: Injectable,
|
|
786
793
|
args: [{
|
|
787
794
|
providedIn: 'root',
|
|
788
795
|
}]
|
|
789
796
|
}] });
|
|
790
797
|
|
|
798
|
+
class MemoryTokenStorageService {
|
|
799
|
+
static { this.workerUrl = null; }
|
|
800
|
+
constructor() {
|
|
801
|
+
this.keysShouldStoreInMemory = [
|
|
802
|
+
'access_token',
|
|
803
|
+
'id_token',
|
|
804
|
+
'expires_at',
|
|
805
|
+
'id_token_claims_obj',
|
|
806
|
+
'id_token_expires_at',
|
|
807
|
+
'id_token_stored_at',
|
|
808
|
+
'access_token_stored_at',
|
|
809
|
+
'abpOAuthClientId',
|
|
810
|
+
'granted_scopes',
|
|
811
|
+
];
|
|
812
|
+
this.cache = new Map();
|
|
813
|
+
this.localStorageService = inject(AbpLocalStorageService);
|
|
814
|
+
this._document = inject(DOCUMENT);
|
|
815
|
+
this.destroyRef = inject(DestroyRef);
|
|
816
|
+
this.useSharedWorker = false;
|
|
817
|
+
this.checkAuthStateChanges = (key) => {
|
|
818
|
+
if (key === 'access_token' && !this.cache.get('access_token')) {
|
|
819
|
+
this.refreshDocument();
|
|
820
|
+
}
|
|
821
|
+
};
|
|
822
|
+
this.initializeStorage();
|
|
823
|
+
this.setupCleanup();
|
|
824
|
+
}
|
|
825
|
+
initializeStorage() {
|
|
826
|
+
// @ts-ignore
|
|
827
|
+
if (typeof SharedWorker !== 'undefined') {
|
|
828
|
+
try {
|
|
829
|
+
// Create worker from data URL to avoid path resolution issues in consuming apps
|
|
830
|
+
// Data URLs are deterministic - same content produces same URL across all tabs
|
|
831
|
+
if (!MemoryTokenStorageService.workerUrl) {
|
|
832
|
+
MemoryTokenStorageService.workerUrl = this.createWorkerDataUrl();
|
|
833
|
+
}
|
|
834
|
+
// @ts-ignore
|
|
835
|
+
this.worker = new SharedWorker(MemoryTokenStorageService.workerUrl, {
|
|
836
|
+
name: 'oauth-token-storage',
|
|
837
|
+
});
|
|
838
|
+
this.port = this.worker.port;
|
|
839
|
+
this.port.start();
|
|
840
|
+
this.useSharedWorker = true;
|
|
841
|
+
this.port.onmessage = event => {
|
|
842
|
+
const { action, key, value } = event.data;
|
|
843
|
+
switch (action) {
|
|
844
|
+
case 'set':
|
|
845
|
+
this.checkAuthStateChanges(key);
|
|
846
|
+
this.cache.set(key, value);
|
|
847
|
+
break;
|
|
848
|
+
case 'remove':
|
|
849
|
+
this.cache.delete(key);
|
|
850
|
+
this.refreshDocument();
|
|
851
|
+
break;
|
|
852
|
+
case 'clear':
|
|
853
|
+
this.cache.clear();
|
|
854
|
+
this.refreshDocument();
|
|
855
|
+
break;
|
|
856
|
+
case 'get':
|
|
857
|
+
if (value !== null) {
|
|
858
|
+
this.cache.set(key, value);
|
|
859
|
+
}
|
|
860
|
+
break;
|
|
861
|
+
}
|
|
862
|
+
};
|
|
863
|
+
// Load all tokens from SharedWorker on initialization
|
|
864
|
+
this.keysShouldStoreInMemory.forEach(key => {
|
|
865
|
+
this.port?.postMessage({ action: 'get', key });
|
|
866
|
+
});
|
|
867
|
+
}
|
|
868
|
+
catch (error) {
|
|
869
|
+
this.useSharedWorker = false;
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
else {
|
|
873
|
+
this.useSharedWorker = false;
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
getItem(key) {
|
|
877
|
+
if (!this.keysShouldStoreInMemory.includes(key)) {
|
|
878
|
+
return this.localStorageService.getItem(key);
|
|
879
|
+
}
|
|
880
|
+
return this.cache.get(key) || null;
|
|
881
|
+
}
|
|
882
|
+
setItem(key, value) {
|
|
883
|
+
if (!this.keysShouldStoreInMemory.includes(key)) {
|
|
884
|
+
this.localStorageService.setItem(key, value);
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
if (this.useSharedWorker && this.port) {
|
|
888
|
+
this.cache.set(key, value);
|
|
889
|
+
this.port.postMessage({ action: 'set', key, value });
|
|
890
|
+
}
|
|
891
|
+
else {
|
|
892
|
+
this.cache.set(key, value);
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
removeItem(key) {
|
|
896
|
+
if (!this.keysShouldStoreInMemory.includes(key)) {
|
|
897
|
+
this.localStorageService.removeItem(key);
|
|
898
|
+
return;
|
|
899
|
+
}
|
|
900
|
+
if (this.useSharedWorker && this.port) {
|
|
901
|
+
this.cache.delete(key);
|
|
902
|
+
this.port.postMessage({ action: 'remove', key });
|
|
903
|
+
}
|
|
904
|
+
else {
|
|
905
|
+
this.cache.delete(key);
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
clear() {
|
|
909
|
+
if (this.useSharedWorker && this.port) {
|
|
910
|
+
this.port.postMessage({ action: 'clear' });
|
|
911
|
+
}
|
|
912
|
+
this.cache.clear();
|
|
913
|
+
}
|
|
914
|
+
cleanupPort() {
|
|
915
|
+
if (this.useSharedWorker && this.port) {
|
|
916
|
+
try {
|
|
917
|
+
this.port.postMessage({ action: 'disconnect' });
|
|
918
|
+
}
|
|
919
|
+
catch (error) {
|
|
920
|
+
//
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
setupCleanup() {
|
|
925
|
+
if (this._document.defaultView) {
|
|
926
|
+
fromEvent(this._document.defaultView, 'beforeunload')
|
|
927
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
928
|
+
.subscribe(() => this.cleanupPort());
|
|
929
|
+
fromEvent(this._document.defaultView, 'pagehide')
|
|
930
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
931
|
+
.subscribe(() => this.cleanupPort());
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
refreshDocument() {
|
|
935
|
+
this.cleanupPort();
|
|
936
|
+
setTimeout(() => {
|
|
937
|
+
this._document.defaultView?.location.reload();
|
|
938
|
+
}, 100);
|
|
939
|
+
}
|
|
940
|
+
createWorkerDataUrl() {
|
|
941
|
+
const workerScript = `const tokenStore = new Map();
|
|
942
|
+
const ports = new Set();
|
|
943
|
+
|
|
944
|
+
function broadcastToOtherPorts(senderPort, message) {
|
|
945
|
+
const deadPorts = [];
|
|
946
|
+
ports.forEach(p => {
|
|
947
|
+
if (p !== senderPort) {
|
|
948
|
+
try {
|
|
949
|
+
p.postMessage(message);
|
|
950
|
+
} catch (error) {
|
|
951
|
+
deadPorts.push(p);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
});
|
|
955
|
+
deadPorts.forEach(p => ports.delete(p));
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
function removePort(port) {
|
|
959
|
+
if (ports.has(port)) {
|
|
960
|
+
ports.delete(port);
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
self.onconnect = (event) => {
|
|
965
|
+
const port = event.ports[0];
|
|
966
|
+
ports.add(port);
|
|
967
|
+
|
|
968
|
+
port.addEventListener('messageerror', () => {
|
|
969
|
+
removePort(port);
|
|
970
|
+
});
|
|
971
|
+
|
|
972
|
+
port.onmessage = (e) => {
|
|
973
|
+
const { action, key, value } = e.data;
|
|
974
|
+
|
|
975
|
+
switch (action) {
|
|
976
|
+
case 'set':
|
|
977
|
+
if (key && value !== undefined) {
|
|
978
|
+
tokenStore.set(key, value);
|
|
979
|
+
broadcastToOtherPorts(port, { action: 'set', key, value });
|
|
980
|
+
}
|
|
981
|
+
break;
|
|
982
|
+
|
|
983
|
+
case 'remove':
|
|
984
|
+
if (key) {
|
|
985
|
+
tokenStore.delete(key);
|
|
986
|
+
broadcastToOtherPorts(port, { action: 'remove', key });
|
|
987
|
+
}
|
|
988
|
+
break;
|
|
989
|
+
|
|
990
|
+
case 'clear':
|
|
991
|
+
tokenStore.clear();
|
|
992
|
+
broadcastToOtherPorts(port, { action: 'clear' });
|
|
993
|
+
break;
|
|
994
|
+
|
|
995
|
+
case 'get':
|
|
996
|
+
if (key) {
|
|
997
|
+
const value = tokenStore.get(key) ?? null;
|
|
998
|
+
port.postMessage({ action: 'get', key, value });
|
|
999
|
+
}
|
|
1000
|
+
break;
|
|
1001
|
+
|
|
1002
|
+
case 'disconnect':
|
|
1003
|
+
removePort(port);
|
|
1004
|
+
break;
|
|
1005
|
+
|
|
1006
|
+
default:
|
|
1007
|
+
//
|
|
1008
|
+
}
|
|
1009
|
+
};
|
|
1010
|
+
|
|
1011
|
+
port.start();
|
|
1012
|
+
};`;
|
|
1013
|
+
return 'data:application/javascript;base64,' + btoa(workerScript);
|
|
1014
|
+
}
|
|
1015
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MemoryTokenStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1016
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MemoryTokenStorageService, providedIn: 'root' }); }
|
|
1017
|
+
}
|
|
1018
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MemoryTokenStorageService, decorators: [{
|
|
1019
|
+
type: Injectable,
|
|
1020
|
+
args: [{
|
|
1021
|
+
providedIn: 'root',
|
|
1022
|
+
}]
|
|
1023
|
+
}], ctorParameters: () => [] });
|
|
1024
|
+
|
|
791
1025
|
function provideAbpOAuth() {
|
|
792
1026
|
const providers = [
|
|
793
1027
|
{
|
|
@@ -849,11 +1083,11 @@ class AbpOAuthModule {
|
|
|
849
1083
|
providers: [provideAbpOAuth()],
|
|
850
1084
|
};
|
|
851
1085
|
}
|
|
852
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
853
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
854
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1086
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1087
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthModule }); }
|
|
1088
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthModule }); }
|
|
855
1089
|
}
|
|
856
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1090
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AbpOAuthModule, decorators: [{
|
|
857
1091
|
type: NgModule
|
|
858
1092
|
}] });
|
|
859
1093
|
|
|
@@ -861,5 +1095,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
|
|
|
861
1095
|
* Generated bundle index. Do not edit.
|
|
862
1096
|
*/
|
|
863
1097
|
|
|
864
|
-
export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, BrowserTokenStorageService, COOKIES, MockStorage, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, OAuthErrorFilterService, RememberMeService, ServerTokenStorageService, abpOAuthGuard, asyncAbpOAuthGuard, buildLoginUrl, checkAccessToken, clearOAuthStorage, isTokenExpired, oAuthStorageFactory, pipeToLogin, provideAbpOAuth };
|
|
1098
|
+
export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, BrowserTokenStorageService, COOKIES, MemoryTokenStorageService, MockStorage, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, OAuthErrorFilterService, RememberMeService, ServerTokenStorageService, abpOAuthGuard, asyncAbpOAuthGuard, buildLoginUrl, checkAccessToken, clearOAuthStorage, isTokenExpired, oAuthStorageFactory, pipeToLogin, provideAbpOAuth };
|
|
865
1099
|
//# sourceMappingURL=abp-ng.oauth.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.oauth.mjs","sources":["../tmp-esm2022/lib/providers/navigate-to-manage-profile.provider.js","../tmp-esm2022/lib/guards/oauth.guard.js","../tmp-esm2022/lib/handlers/oauth-configuration.handler.js","../tmp-esm2022/lib/interceptors/api.interceptor.js","../tmp-esm2022/lib/utils/clear-o-auth-storage.js","../tmp-esm2022/lib/tokens/cookies.js","../tmp-esm2022/lib/services/server-token-storage.service.js","../tmp-esm2022/lib/utils/storage.factory.js","../tmp-esm2022/lib/services/remember-me.service.js","../tmp-esm2022/lib/utils/auth-utils.js","../tmp-esm2022/lib/utils/check-access-token.js","../tmp-esm2022/lib/strategies/auth-flow-strategy.js","../tmp-esm2022/lib/strategies/auth-code-flow-strategy.js","../tmp-esm2022/lib/strategies/auth-password-flow-strategy.js","../tmp-esm2022/lib/tokens/auth-flow-strategy.js","../tmp-esm2022/lib/services/oauth.service.js","../tmp-esm2022/lib/services/oauth-error-filter.service.js","../tmp-esm2022/lib/services/browser-token-storage.service.js","../tmp-esm2022/lib/providers/oauth-module-config.provider.js","../tmp-esm2022/lib/oauth.module.js","../tmp-esm2022/abp-ng.oauth.js"],"sourcesContent":["import { inject } from '@angular/core';\nimport { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';\nexport const NavigateToManageProfileProvider = {\n provide: NAVIGATE_TO_MANAGE_PROFILE,\n useFactory: () => {\n const environment = inject(EnvironmentService);\n return () => {\n const env = environment.getEnvironment();\n if (!env.oAuthConfig) {\n console.warn('The oAuthConfig env is missing on environment.ts');\n return;\n }\n const { issuer } = env.oAuthConfig;\n const path = issuer.endsWith('/') ? issuer : `${issuer}/`;\n window.open(`${path}Account/Manage?returnUrl=${window.location.href}`, '_self');\n };\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGUtdG8tbWFuYWdlLXByb2ZpbGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3Byb3ZpZGVycy9uYXZpZ2F0ZS10by1tYW5hZ2UtcHJvZmlsZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBYTtJQUN2RCxPQUFPLEVBQUUsMEJBQTBCO0lBQ25DLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDZixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvQyxPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7Z0JBQ2pFLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLDRCQUE0QixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UsIE5BVklHQVRFX1RPX01BTkFHRV9QUk9GSUxFIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvTWFuYWdlUHJvZmlsZVByb3ZpZGVyOiBQcm92aWRlciA9IHtcclxuICBwcm92aWRlOiBOQVZJR0FURV9UT19NQU5BR0VfUFJPRklMRSxcclxuICB1c2VGYWN0b3J5OiAoKSA9PiB7XHJcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGluamVjdChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVudiA9IGVudmlyb25tZW50LmdldEVudmlyb25tZW50KCk7XHJcbiAgICAgIGlmICghZW52Lm9BdXRoQ29uZmlnKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdUaGUgb0F1dGhDb25maWcgZW52IGlzIG1pc3Npbmcgb24gZW52aXJvbm1lbnQudHMnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHsgaXNzdWVyIH0gPSBlbnYub0F1dGhDb25maWc7XHJcbiAgICAgIGNvbnN0IHBhdGggPSBpc3N1ZXIuZW5kc1dpdGgoJy8nKSA/IGlzc3VlciA6IGAke2lzc3Vlcn0vYDtcclxuICAgICAgd2luZG93Lm9wZW4oYCR7cGF0aH1BY2NvdW50L01hbmFnZT9yZXR1cm5Vcmw9JHt3aW5kb3cubG9jYXRpb24uaHJlZn1gLCAnX3NlbGYnKTtcclxuICAgIH07XHJcbiAgfSxcclxufTtcclxuIl19","import { Injectable, inject, PLATFORM_ID, RESPONSE_INIT } from '@angular/core';\nimport { timer, filter, take, map, firstValueFrom, timeout, catchError, of } from 'rxjs';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { AuthService, EnvironmentService } from '@abp/ng.core';\nimport { isPlatformServer } from '@angular/common';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated Use `abpOAuthGuard` *function* instead.\n */\nexport class AbpOAuthGuard {\n constructor() {\n this.oAuthService = inject(OAuthService);\n this.authService = inject(AuthService);\n }\n canActivate(route, state) {\n const hasValidAccessToken = this.oAuthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return true;\n }\n const params = { returnUrl: state.url };\n this.authService.navigateToLogin(params);\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthGuard, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthGuard, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\nexport const abpOAuthGuard = (route, state) => {\n const oAuthService = inject(OAuthService);\n const authService = inject(AuthService);\n const platformId = inject(PLATFORM_ID);\n const resInit = inject(RESPONSE_INIT);\n const environmentService = inject(EnvironmentService);\n const hasValidAccessToken = oAuthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return true;\n }\n const params = { returnUrl: state.url };\n if (isPlatformServer(platformId) && resInit) {\n const ssrAuthorizationUrl = environmentService.getEnvironment().oAuthConfig.ssrAuthorizationUrl;\n const url = buildLoginUrl(ssrAuthorizationUrl, params);\n const headers = new Headers(resInit.headers);\n headers.set('Location', url);\n resInit.status = 302;\n resInit.statusText = 'Found';\n resInit.headers = headers;\n return;\n }\n authService.navigateToLogin(params);\n return false;\n};\nexport const buildLoginUrl = (path, params) => {\n if (!params || Object.keys(params).length === 0)\n return path;\n const usp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v == null)\n continue;\n Array.isArray(v) ? v.forEach(x => usp.append(k, String(x))) : usp.set(k, String(v));\n }\n return `${path}?${usp.toString()}`;\n};\nexport const asyncAbpOAuthGuard = (route, state) => {\n const oAuthService = inject(OAuthService);\n const authService = inject(AuthService);\n const environmentService = inject(EnvironmentService);\n const platformId = inject(PLATFORM_ID);\n const resInit = inject(RESPONSE_INIT);\n const { oAuthConfig } = environmentService.getEnvironment();\n if (oAuthConfig?.responseType === 'code') {\n return firstValueFrom(timer(0, 100).pipe(map(() => oAuthService.hasValidAccessToken()), filter(Boolean), take(1), timeout(3000), catchError(() => {\n if (isPlatformServer(platformId) && resInit) {\n const ssrAuthorizationUrl = environmentService.getEnvironment().oAuthConfig.ssrAuthorizationUrl;\n const url = buildLoginUrl(ssrAuthorizationUrl, { returnUrl: state.url });\n const headers = new Headers(resInit.headers);\n headers.set('Location', url);\n resInit.status = 302;\n resInit.statusText = 'Found';\n resInit.headers = headers;\n return;\n }\n authService.navigateToLogin({ returnUrl: state.url });\n return of(false);\n })));\n }\n if (oAuthService.hasValidAccessToken()) {\n return true;\n }\n authService.navigateToLogin({ returnUrl: state.url });\n return false;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL2d1YXJkcy9vYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUS9FLE9BQU8sRUFBYyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUVuRDs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBZXREO0lBYkMsV0FBVyxDQUNULEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BFLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhH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QUFHLE9BQU8sQ0FBQztnQkFDN0IsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQzFCLE9BQU87WUFDVCxDQUFDO1lBQ0QsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN0RCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIFBMQVRGT1JNX0lELCBSRVNQT05TRV9JTklUIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgVXJsVHJlZSxcclxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVGbiwgUGFyYW1zLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aW1lciwgZmlsdGVyLCB0YWtlLCBtYXAsIGZpcnN0VmFsdWVGcm9tLCB0aW1lb3V0LCBjYXRjaEVycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBJQWJwR3VhcmQsIEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIFVzZSBgYWJwT0F1dGhHdWFyZGAgKmZ1bmN0aW9uKiBpbnN0ZWFkLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFicE9BdXRoR3VhcmQgaW1wbGVtZW50cyBJQWJwR3VhcmQge1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBvQXV0aFNlcnZpY2UgPSBpbmplY3QoT0F1dGhTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xyXG5cclxuICBjYW5BY3RpdmF0ZShcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcclxuICAgIGNvbnN0IGhhc1ZhbGlkQWNjZXNzVG9rZW4gPSB0aGlzLm9BdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCk7XHJcbiAgICBpZiAoaGFzVmFsaWRBY2Nlc3NUb2tlbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7IHJldHVyblVybDogc3RhdGUudXJsIH07XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm5hdmlnYXRlVG9Mb2dpbihwYXJhbXMpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFicE9BdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoXHJcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbikgPT4ge1xyXG4gIGNvbnN0IG9BdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xyXG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcclxuICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICBjb25zdCByZXNJbml0ID0gaW5qZWN0KFJFU1BPTlNFX0lOSVQpO1xyXG4gIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IGluamVjdChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICBjb25zdCBoYXNWYWxpZEFjY2Vzc1Rva2VuID0gb0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcclxuXHJcbiAgaWYgKGhhc1ZhbGlkQWNjZXNzVG9rZW4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcGFyYW1zID0geyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9O1xyXG4gIGlmIChpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpICYmIHJlc0luaXQpIHtcclxuICAgIGNvbnN0IHNzckF1dGhvcml6YXRpb25VcmwgPSBlbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKS5vQXV0aENvbmZpZy5zc3JBdXRob3JpemF0aW9uVXJsO1xyXG4gICAgY29uc3QgdXJsID0gYnVpbGRMb2dpblVybChzc3JBdXRob3JpemF0aW9uVXJsLCBwYXJhbXMpO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlc0luaXQuaGVhZGVycyk7XHJcbiAgICBoZWFkZXJzLnNldCgnTG9jYXRpb24nLCB1cmwpO1xyXG4gICAgcmVzSW5pdC5zdGF0dXMgPSAzMDI7XHJcbiAgICByZXNJbml0LnN0YXR1c1RleHQgPSAnRm91bmQnO1xyXG4gICAgcmVzSW5pdC5oZWFkZXJzID0gaGVhZGVycztcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgYXV0aFNlcnZpY2UubmF2aWdhdGVUb0xvZ2luKHBhcmFtcyk7XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGJ1aWxkTG9naW5VcmwgPSAocGF0aDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbXMpOiBzdHJpbmcgPT4ge1xyXG4gIGlmICghcGFyYW1zIHx8IE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID09PSAwKSByZXR1cm4gcGF0aDtcclxuICBjb25zdCB1c3AgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XHJcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkgY29udGludWU7XHJcbiAgICBBcnJheS5pc0FycmF5KHYpID8gdi5mb3JFYWNoKHggPT4gdXNwLmFwcGVuZChrLCBTdHJpbmcoeCkpKSA6IHVzcC5zZXQoaywgU3RyaW5nKHYpKTtcclxuICB9XHJcbiAgcmV0dXJuIGAke3BhdGh9PyR7dXNwLnRvU3RyaW5nKCl9YDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFzeW5jQWJwT0F1dGhHdWFyZDogQ2FuQWN0aXZhdGVGbiA9IChcclxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuKSA9PiB7XHJcbiAgY29uc3Qgb0F1dGhTZXJ2aWNlID0gaW5qZWN0KE9BdXRoU2VydmljZSk7XHJcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xyXG4gIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IGluamVjdChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG4gIGNvbnN0IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG4gIGNvbnN0IHJlc0luaXQgPSBpbmplY3QoUkVTUE9OU0VfSU5JVCk7XHJcblxyXG4gIGNvbnN0IHsgb0F1dGhDb25maWcgfSA9IGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG5cclxuICBpZiAob0F1dGhDb25maWc/LnJlc3BvbnNlVHlwZSA9PT0gJ2NvZGUnKSB7XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgIHRpbWVyKDAsIDEwMCkucGlwZShcclxuICAgICAgICBtYXAoKCkgPT4gb0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSksXHJcbiAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgdGltZW91dCgzMDAwKSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpICYmIHJlc0luaXQpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3NyQXV0aG9yaXphdGlvblVybCA9IGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpLm9BdXRoQ29uZmlnLnNzckF1dGhvcml6YXRpb25Vcmw7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGJ1aWxkTG9naW5Vcmwoc3NyQXV0aG9yaXphdGlvblVybCwgeyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9KTtcclxuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlc0luaXQuaGVhZGVycyk7XHJcbiAgICAgICAgICAgIGhlYWRlcnMuc2V0KCdMb2NhdGlvbicsIHVybCk7XHJcbiAgICAgICAgICAgIHJlc0luaXQuc3RhdHVzID0gMzAyO1xyXG4gICAgICAgICAgICByZXNJbml0LnN0YXR1c1RleHQgPSAnRm91bmQnO1xyXG4gICAgICAgICAgICByZXNJbml0LmhlYWRlcnMgPSBoZWFkZXJzO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdXRoU2VydmljZS5uYXZpZ2F0ZVRvTG9naW4oeyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9KTtcclxuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmIChvQXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGF1dGhTZXJ2aWNlLm5hdmlnYXRlVG9Mb2dpbih7IHJldHVyblVybDogc3RhdGUudXJsIH0pO1xyXG4gIHJldHVybiBmYWxzZTtcclxufTtcclxuIl19","import { Injectable, inject } from '@angular/core';\nimport { OAuthService } from \"angular-oauth2-oidc\";\nimport compare from 'just-compare';\nimport { filter, map } from 'rxjs/operators';\nimport { EnvironmentService, CORE_OPTIONS } from '@abp/ng.core';\nimport * as i0 from \"@angular/core\";\nexport class OAuthConfigurationHandler {\n constructor() {\n this.oAuthService = inject(OAuthService);\n this.environmentService = inject(EnvironmentService);\n this.options = inject(CORE_OPTIONS);\n this.listenToSetEnvironment();\n }\n listenToSetEnvironment() {\n this.environmentService\n .createOnUpdateStream(state => state)\n .pipe(map(environment => environment.oAuthConfig), filter(config => !compare(config, this.options.environment.oAuthConfig)))\n .subscribe((config) => {\n this.oAuthService.configure(config);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthConfigurationHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthConfigurationHandler, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthConfigurationHandler, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtY29uZmlndXJhdGlvbi5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9oYW5kbGVycy9vYXV0aC1jb25maWd1cmF0aW9uLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBTyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBS3JFLE1BQU0sT0FBTyx5QkFBeUI7SUFLcEM7UUFKUSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQUcsTUFBTSxDQUFXLFlBQVksQ0FBQyxDQUFDO1FBRy9DLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzthQUNwQyxJQUFJLENBQ0gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQXlCLENBQUMsRUFDekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3pFO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQW5CVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzsyRkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhDb25maWcsIE9BdXRoU2VydmljZSB9IGZyb20gXCJhbmd1bGFyLW9hdXRoMi1vaWRjXCI7XHJcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBQlAsIEVudmlyb25tZW50U2VydmljZSwgQ09SRV9PUFRJT05TIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPQXV0aENvbmZpZ3VyYXRpb25IYW5kbGVyIHtcclxuICBwcml2YXRlIG9BdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlID0gaW5qZWN0KEVudmlyb25tZW50U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBvcHRpb25zID0gaW5qZWN0PEFCUC5Sb290PihDT1JFX09QVElPTlMpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMubGlzdGVuVG9TZXRFbnZpcm9ubWVudCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub1NldEVudmlyb25tZW50KCkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2VcclxuICAgICAgLmNyZWF0ZU9uVXBkYXRlU3RyZWFtKHN0YXRlID0+IHN0YXRlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoZW52aXJvbm1lbnQgPT4gZW52aXJvbm1lbnQub0F1dGhDb25maWcgYXMgQXV0aENvbmZpZyksXHJcbiAgICAgICAgZmlsdGVyKGNvbmZpZyA9PiAhY29tcGFyZShjb25maWcsIHRoaXMub3B0aW9ucy5lbnZpcm9ubWVudC5vQXV0aENvbmZpZykpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZShjb25maWcpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19","import { Injectable, inject } from '@angular/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { finalize } from 'rxjs/operators';\nimport { HttpWaitService, IS_EXTERNAL_REQUEST, SessionStateService, TENANT_KEY, } from '@abp/ng.core';\nimport * as i0 from \"@angular/core\";\nexport class OAuthApiInterceptor {\n constructor() {\n this.oAuthService = inject(OAuthService);\n this.sessionState = inject(SessionStateService);\n this.httpWaitService = inject(HttpWaitService);\n this.tenantKey = inject(TENANT_KEY);\n }\n intercept(request, next) {\n this.httpWaitService.addRequest(request);\n const isExternalRequest = request.context?.get(IS_EXTERNAL_REQUEST);\n const newRequest = isExternalRequest\n ? request\n : request.clone({\n setHeaders: this.getAdditionalHeaders(request.headers),\n });\n return next\n .handle(newRequest)\n .pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\n }\n getAdditionalHeaders(existingHeaders) {\n const headers = {};\n const token = this.oAuthService.getAccessToken();\n if (!existingHeaders?.has('Authorization') && token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n const lang = this.sessionState.getLanguage();\n if (!existingHeaders?.has('Accept-Language') && lang) {\n headers['Accept-Language'] = lang;\n }\n const tenant = this.sessionState.getTenant();\n if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {\n headers[this.tenantKey] = tenant.id;\n }\n headers['X-Requested-With'] = 'XMLHttpRequest';\n return headers;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthApiInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthApiInterceptor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthApiInterceptor, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXBpLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUNMLGVBQWUsRUFFZixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGNBQWMsQ0FBQzs7QUFLdEIsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQXNDeEM7SUFwQ0MsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLGlCQUFpQjtZQUNsQyxDQUFDLENBQUMsT0FBTztZQUNULENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNaLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzthQUN2RCxDQUFDLENBQUM7UUFFUCxPQUFPLElBQUk7YUFDUixNQUFNLENBQUMsVUFBVSxDQUFDO2FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxlQUE2QjtRQUNoRCxNQUFNLE9BQU8sR0FBRyxFQUFTLENBQUM7UUFFMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNwRCxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNwQyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFL0MsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0F6Q1UsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBIZWFkZXJzLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBXYWl0U2VydmljZSxcclxuICBJQXBpSW50ZXJjZXB0b3IsXHJcbiAgSVNfRVhURVJOQUxfUkVRVUVTVCxcclxuICBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxyXG4gIFRFTkFOVF9LRVksXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPQXV0aEFwaUludGVyY2VwdG9yIGltcGxlbWVudHMgSUFwaUludGVyY2VwdG9yIHtcclxuICBwcml2YXRlIG9BdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc2Vzc2lvblN0YXRlID0gaW5qZWN0KFNlc3Npb25TdGF0ZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgaHR0cFdhaXRTZXJ2aWNlID0gaW5qZWN0KEh0dHBXYWl0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0ZW5hbnRLZXkgPSBpbmplY3QoVEVOQU5UX0tFWSk7XHJcblxyXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHRoaXMuaHR0cFdhaXRTZXJ2aWNlLmFkZFJlcXVlc3QocmVxdWVzdCk7XHJcbiAgICBjb25zdCBpc0V4dGVybmFsUmVxdWVzdCA9IHJlcXVlc3QuY29udGV4dD8uZ2V0KElTX0VYVEVSTkFMX1JFUVVFU1QpO1xyXG4gICAgY29uc3QgbmV3UmVxdWVzdCA9IGlzRXh0ZXJuYWxSZXF1ZXN0XHJcbiAgICAgID8gcmVxdWVzdFxyXG4gICAgICA6IHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgICAgc2V0SGVhZGVyczogdGhpcy5nZXRBZGRpdGlvbmFsSGVhZGVycyhyZXF1ZXN0LmhlYWRlcnMpLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXh0XHJcbiAgICAgIC5oYW5kbGUobmV3UmVxdWVzdClcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5odHRwV2FpdFNlcnZpY2UuZGVsZXRlUmVxdWVzdChyZXF1ZXN0KSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkaXRpb25hbEhlYWRlcnMoZXhpc3RpbmdIZWFkZXJzPzogSHR0cEhlYWRlcnMpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB7fSBhcyBhbnk7XHJcblxyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xyXG4gICAgaWYgKCFleGlzdGluZ0hlYWRlcnM/LmhhcygnQXV0aG9yaXphdGlvbicpICYmIHRva2VuKSB7XHJcbiAgICAgIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gICAgaWYgKCFleGlzdGluZ0hlYWRlcnM/LmhhcygnQWNjZXB0LUxhbmd1YWdlJykgJiYgbGFuZykge1xyXG4gICAgICBoZWFkZXJzWydBY2NlcHQtTGFuZ3VhZ2UnXSA9IGxhbmc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGVuYW50ID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0VGVuYW50KCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSGVhZGVycz8uaGFzKHRoaXMudGVuYW50S2V5KSAmJiB0ZW5hbnQ/LmlkKSB7XHJcbiAgICAgIGhlYWRlcnNbdGhpcy50ZW5hbnRLZXldID0gdGVuYW50LmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlcnNbJ1gtUmVxdWVzdGVkLVdpdGgnXSA9ICdYTUxIdHRwUmVxdWVzdCc7XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { OAuthStorage } from 'angular-oauth2-oidc';\nexport function clearOAuthStorage(injector) {\n const storage = injector.get(OAuthStorage);\n const keys = [\n 'access_token',\n 'id_token',\n 'refresh_token',\n 'nonce',\n 'PKCE_verifier',\n 'expires_at',\n 'id_token_claims_obj',\n 'id_token_expires_at',\n 'id_token_stored_at',\n 'access_token_stored_at',\n 'granted_scopes',\n 'session_state',\n ];\n keys.forEach(key => storage.removeItem(key));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItby1hdXRoLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3V0aWxzL2NsZWFyLW8tYXV0aC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUduRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBa0I7SUFDbEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRztRQUNYLGNBQWM7UUFDZCxVQUFVO1FBQ1YsZUFBZTtRQUNmLE9BQU87UUFDUCxlQUFlO1FBQ2YsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIsZUFBZTtLQUNoQixDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJPQXV0aFN0b3JhZ2UoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgY29uc3Qgc3RvcmFnZSA9IGluamVjdG9yLmdldChPQXV0aFN0b3JhZ2UpO1xyXG4gIGNvbnN0IGtleXMgPSBbXHJcbiAgICAnYWNjZXNzX3Rva2VuJyxcclxuICAgICdpZF90b2tlbicsXHJcbiAgICAncmVmcmVzaF90b2tlbicsXHJcbiAgICAnbm9uY2UnLFxyXG4gICAgJ1BLQ0VfdmVyaWZpZXInLFxyXG4gICAgJ2V4cGlyZXNfYXQnLFxyXG4gICAgJ2lkX3Rva2VuX2NsYWltc19vYmonLFxyXG4gICAgJ2lkX3Rva2VuX2V4cGlyZXNfYXQnLFxyXG4gICAgJ2lkX3Rva2VuX3N0b3JlZF9hdCcsXHJcbiAgICAnYWNjZXNzX3Rva2VuX3N0b3JlZF9hdCcsXHJcbiAgICAnZ3JhbnRlZF9zY29wZXMnLFxyXG4gICAgJ3Nlc3Npb25fc3RhdGUnLFxyXG4gIF07XHJcblxyXG4gIGtleXMuZm9yRWFjaChrZXkgPT4gc3RvcmFnZS5yZW1vdmVJdGVtKGtleSkpO1xyXG59XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const COOKIES = new InjectionToken('COOKIES');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvdG9rZW5zL2Nvb2tpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQVMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IENPT0tJRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQ09PS0lFUycpO1xyXG4iXX0=","import { inject, Inject, Injectable, Optional } from '@angular/core';\nimport { REQUEST } from '@angular/core';\nimport { COOKIES } from '../tokens';\nimport * as i0 from \"@angular/core\";\nexport class ServerTokenStorageService {\n constructor(req) {\n this.req = req;\n this.cookies = new Map();\n // For server builders where REQUEST injection is not possible, cookies can be provided via COOKIES token\n this.cookiesStr = inject(COOKIES, { optional: true });\n const cookieHeader = this.req?.headers.get('cookie') ?? this.cookiesStr ?? '';\n for (const part of cookieHeader.split(';')) {\n const i = part.indexOf('=');\n if (i > -1) {\n const k = part.slice(0, i).trim();\n const v = decodeURIComponent(part.slice(i + 1).trim());\n this.cookies.set(k, v);\n }\n }\n }\n getItem(key) {\n const fromCookie = this.cookies.get(key);\n if (fromCookie) {\n return fromCookie;\n }\n return '';\n }\n setItem(_k, _v) { }\n removeItem(_k) { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ServerTokenStorageService, deps: [{ token: REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ServerTokenStorageService, providedIn: null }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ServerTokenStorageService, decorators: [{\n type: Injectable,\n args: [{ providedIn: null }]\n }], ctorParameters: () => [{ type: Request, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [REQUEST]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXRva2VuLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvc2VydmljZXMvc2VydmVyLXRva2VuLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHcEMsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxZQUFpRCxHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUo1RCxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDNUMseUdBQXlHO1FBQ2pHLGVBQVUsR0FBRyxNQUFNLENBQVMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFHL0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzlFLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVUsRUFBRSxFQUFVLElBQVMsQ0FBQztJQUN4QyxVQUFVLENBQUMsRUFBVSxJQUFTLENBQUM7OEdBM0JwQix5QkFBeUIsa0JBS0osT0FBTztrSEFMNUIseUJBQXlCLGNBRFosSUFBSTs7MkZBQ2pCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OzBCQU1qQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IFJFUVVFU1QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ09PS0lFUyB9IGZyb20gJy4uL3Rva2Vucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IG51bGwgfSlcclxuZXhwb3J0IGNsYXNzIFNlcnZlclRva2VuU3RvcmFnZVNlcnZpY2UgaW1wbGVtZW50cyBPQXV0aFN0b3JhZ2Uge1xyXG4gIHByaXZhdGUgY29va2llcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgLy8gRm9yIHNlcnZlciBidWlsZGVycyB3aGVyZSBSRVFVRVNUIGluamVjdGlvbiBpcyBub3QgcG9zc2libGUsIGNvb2tpZXMgY2FuIGJlIHByb3ZpZGVkIHZpYSBDT09LSUVTIHRva2VuXHJcbiAgcHJpdmF0ZSBjb29raWVzU3RyID0gaW5qZWN0PHN0cmluZz4oQ09PS0lFUywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChSRVFVRVNUKSBwcml2YXRlIHJlcTogUmVxdWVzdCB8IG51bGwpIHtcclxuICAgIGNvbnN0IGNvb2tpZUhlYWRlciA9IHRoaXMucmVxPy5oZWFkZXJzLmdldCgnY29va2llJykgPz8gdGhpcy5jb29raWVzU3RyID8/ICcnO1xyXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIGNvb2tpZUhlYWRlci5zcGxpdCgnOycpKSB7XHJcbiAgICAgIGNvbnN0IGkgPSBwYXJ0LmluZGV4T2YoJz0nKTtcclxuICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgIGNvbnN0IGsgPSBwYXJ0LnNsaWNlKDAsIGkpLnRyaW0oKTtcclxuICAgICAgICBjb25zdCB2ID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhcnQuc2xpY2UoaSArIDEpLnRyaW0oKSk7XHJcbiAgICAgICAgdGhpcy5jb29raWVzLnNldChrLCB2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmcm9tQ29va2llID0gdGhpcy5jb29raWVzLmdldChrZXkpO1xyXG4gICAgaWYgKGZyb21Db29raWUpIHtcclxuICAgICAgcmV0dXJuIGZyb21Db29raWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0SXRlbShfazogc3RyaW5nLCBfdjogc3RyaW5nKTogdm9pZCB7fVxyXG4gIHJlbW92ZUl0ZW0oX2s6IHN0cmluZyk6IHZvaWQge31cclxufVxyXG4iXX0=","import { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ServerTokenStorageService } from '../services/server-token-storage.service';\nimport { BrowserTokenStorageService } from '../services';\nimport { AbpLocalStorageService, APP_STARTED_WITH_SSR } from '@abp/ng.core';\nexport class MockStorage {\n constructor() {\n this.data = new Map();\n }\n get length() {\n return this.data.size;\n }\n clear() {\n this.data.clear();\n }\n getItem(key) {\n return this.data.get(key) || null;\n }\n key(index) {\n return Array.from(this.data.keys())[index] || null;\n }\n removeItem(key) {\n this.data.delete(key);\n }\n setItem(key, value) {\n this.data.set(key, value);\n }\n}\nexport function oAuthStorageFactory() {\n const platformId = inject(PLATFORM_ID);\n const appStartedWithSSR = inject(APP_STARTED_WITH_SSR);\n if (appStartedWithSSR) {\n return isPlatformBrowser(platformId)\n ? inject(BrowserTokenStorageService)\n : inject(ServerTokenStorageService);\n }\n return inject(AbpLocalStorageService);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi91dGlscy9zdG9yYWdlLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1RSxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUNVLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQW1CM0MsQ0FBQztJQWxCQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFhO1FBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUM7WUFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2VydmVyVG9rZW5TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NlcnZlci10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcm93c2VyVG9rZW5TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IEFicExvY2FsU3RvcmFnZVNlcnZpY2UsIEFQUF9TVEFSVEVEX1dJVEhfU1NSIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNb2NrU3RvcmFnZSBpbXBsZW1lbnRzIFN0b3JhZ2Uge1xyXG4gIHByaXZhdGUgZGF0YSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgZ2V0IGxlbmd0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuc2l6ZTtcclxuICB9XHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLmRhdGEuY2xlYXIoKTtcclxuICB9XHJcbiAgZ2V0SXRlbShrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2V5KSB8fCBudWxsO1xyXG4gIH1cclxuICBrZXkoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5kYXRhLmtleXMoKSlbaW5kZXhdIHx8IG51bGw7XHJcbiAgfVxyXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcclxuICB9XHJcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5kYXRhLnNldChrZXksIHZhbHVlKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvQXV0aFN0b3JhZ2VGYWN0b3J5KCk6IE9BdXRoU3RvcmFnZSB7XHJcbiAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcbiAgY29uc3QgYXBwU3RhcnRlZFdpdGhTU1IgPSBpbmplY3QoQVBQX1NUQVJURURfV0lUSF9TU1IpO1xyXG4gIGlmIChhcHBTdGFydGVkV2l0aFNTUikge1xyXG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpXHJcbiAgICAgID8gaW5qZWN0KEJyb3dzZXJUb2tlblN0b3JhZ2VTZXJ2aWNlKVxyXG4gICAgICA6IGluamVjdChTZXJ2ZXJUb2tlblN0b3JhZ2VTZXJ2aWNlKTtcclxuICB9XHJcbiAgcmV0dXJuIGluamVjdChBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcclxufVxyXG4iXX0=","import { AbpCookieStorageService, AbpLocalStorageService, APP_STARTED_WITH_SSR, } from '@abp/ng.core';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class RememberMeService {\n constructor() {\n this.#rememberMe = 'remember_me';\n this.localStorageService = inject(AbpLocalStorageService);\n this.cookieStorageService = inject(AbpCookieStorageService);\n this.appStartedWithSsr = inject(APP_STARTED_WITH_SSR, { optional: true });\n }\n #rememberMe;\n set(remember) {\n if (this.appStartedWithSsr) {\n this.cookieStorageService.setItem(this.#rememberMe, JSON.stringify(remember));\n return;\n }\n this.localStorageService.setItem(this.#rememberMe, JSON.stringify(remember));\n }\n remove() {\n if (this.appStartedWithSsr) {\n this.cookieStorageService.removeItem(this.#rememberMe);\n return;\n }\n this.localStorageService.removeItem(this.#rememberMe);\n }\n get() {\n if (this.appStartedWithSsr) {\n return Boolean(JSON.parse(this.cookieStorageService.getItem(this.#rememberMe) || 'false'));\n }\n return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe) || 'false'));\n }\n getFromToken(accessToken) {\n let tokenBody = accessToken.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n while (tokenBody.length % 4 !== 0) {\n tokenBody += '=';\n }\n try {\n const parsedToken = JSON.parse(atob(tokenBody));\n return Boolean(parsedToken[this.#rememberMe]);\n }\n catch {\n return false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RememberMeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RememberMeService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RememberMeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtZW1iZXItbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvc2VydmljZXMvcmVtZW1iZXItbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixvQkFBb0IsR0FDckIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS25ELE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJVyxnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUNsQix3QkFBbUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNyRCx5QkFBb0IsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNsRSxzQkFBaUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQXFDOUU7SUF4Q1UsV0FBVyxDQUFpQjtJQUtyQyxHQUFHLENBQUMsUUFBaUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlFLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELFlBQVksQ0FBQyxXQUFtQjtRQUM5QixJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRixPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFNBQVMsSUFBSSxHQUFHLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDOzhHQXhDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBYnBDb29raWVTdG9yYWdlU2VydmljZSxcclxuICBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIEFQUF9TVEFSVEVEX1dJVEhfU1NSLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlbWVtYmVyTWVTZXJ2aWNlIHtcclxuICByZWFkb25seSAjcmVtZW1iZXJNZSA9ICdyZW1lbWJlcl9tZSc7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoQWJwTG9jYWxTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvb2tpZVN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KEFicENvb2tpZVN0b3JhZ2VTZXJ2aWNlKTtcclxuICBwcml2YXRlIGFwcFN0YXJ0ZWRXaXRoU3NyID0gaW5qZWN0KEFQUF9TVEFSVEVEX1dJVEhfU1NSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG5cclxuICBzZXQocmVtZW1iZXI6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmFwcFN0YXJ0ZWRXaXRoU3NyKSB7XHJcbiAgICAgIHRoaXMuY29va2llU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLiNyZW1lbWJlck1lLCBKU09OLnN0cmluZ2lmeShyZW1lbWJlcikpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLiNyZW1lbWJlck1lLCBKU09OLnN0cmluZ2lmeShyZW1lbWJlcikpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgaWYgKHRoaXMuYXBwU3RhcnRlZFdpdGhTc3IpIHtcclxuICAgICAgdGhpcy5jb29raWVTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKHRoaXMuI3JlbWVtYmVyTWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLiNyZW1lbWJlck1lKTtcclxuICB9XHJcblxyXG4gIGdldCgpIHtcclxuICAgIGlmICh0aGlzLmFwcFN0YXJ0ZWRXaXRoU3NyKSB7XHJcbiAgICAgIHJldHVybiBCb29sZWFuKEpTT04ucGFyc2UodGhpcy5jb29raWVTdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuI3JlbWVtYmVyTWUpIHx8ICdmYWxzZScpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBCb29sZWFuKEpTT04ucGFyc2UodGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy4jcmVtZW1iZXJNZSkgfHwgJ2ZhbHNlJykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RnJvbVRva2VuKGFjY2Vzc1Rva2VuOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2tlbkJvZHkgPSBhY2Nlc3NUb2tlbi5zcGxpdCgnLicpWzFdLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XHJcbiAgICB3aGlsZSAodG9rZW5Cb2R5Lmxlbmd0aCAlIDQgIT09IDApIHtcclxuICAgICAgdG9rZW5Cb2R5ICs9ICc9JztcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhcnNlZFRva2VuID0gSlNPTi5wYXJzZShhdG9iKHRva2VuQm9keSkpO1xyXG4gICAgICByZXR1cm4gQm9vbGVhbihwYXJzZWRUb2tlblt0aGlzLiNyZW1lbWJlck1lXSk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=","import { Router } from '@angular/router';\nimport { pipe } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { AuthService, ConfigStateService, } from '@abp/ng.core';\nimport { RememberMeService } from '../services/remember-me.service';\nexport const pipeToLogin = function (params, injector) {\n const configState = injector.get(ConfigStateService);\n const router = injector.get(Router);\n const rememberMeService = injector.get(RememberMeService);\n const authService = injector.get(AuthService);\n return pipe(switchMap(() => configState.refreshAppState()), tap(() => {\n rememberMeService.set(params.rememberMe ||\n rememberMeService.get() ||\n rememberMeService.getFromToken(authService.getAccessToken()));\n if (params.redirectUrl)\n router.navigate([params.redirectUrl]);\n }));\n};\n//Ref: https://github.com/manfredsteyer/angular-oauth2-oidc/issues/1214\nexport function isTokenExpired(expireDate) {\n const currentDate = new Date().getTime();\n return expireDate < currentDate;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvdXRpbHMvYXV0aC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEdBR25CLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBa0IsVUFDeEMsTUFBdUQsRUFDdkQsUUFBa0I7SUFFbEIsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxPQUFPLElBQUksQ0FDVCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQzlDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDUCxpQkFBaUIsQ0FBQyxHQUFHLENBQ25CLE1BQU0sQ0FBQyxVQUFVO1lBQ2pCLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUN2QixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQzdELENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxXQUFXO1lBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUM7QUFFRix1RUFBdUU7QUFDdkUsTUFBTSxVQUFVLGNBQWMsQ0FBQyxVQUFrQjtJQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLE9BQU8sVUFBVSxHQUFHLFdBQVcsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgcGlwZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSxcclxuICBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbiAgTG9naW5QYXJhbXMsXHJcbiAgUGlwZVRvTG9naW5GbixcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBSZW1lbWJlck1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlbWVtYmVyLW1lLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBpcGVUb0xvZ2luOiBQaXBlVG9Mb2dpbkZuID0gZnVuY3Rpb24gKFxyXG4gIHBhcmFtczogUGljazxMb2dpblBhcmFtcywgJ3JlZGlyZWN0VXJsJyB8ICdyZW1lbWJlck1lJz4sXHJcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4pIHtcclxuICBjb25zdCBjb25maWdTdGF0ZSA9IGluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xyXG4gIGNvbnN0IHJlbWVtYmVyTWVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFJlbWVtYmVyTWVTZXJ2aWNlKTtcclxuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcbiAgcmV0dXJuIHBpcGUoXHJcbiAgICBzd2l0Y2hNYXAoKCkgPT4gY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgdGFwKCgpID0+IHtcclxuICAgICAgcmVtZW1iZXJNZVNlcnZpY2Uuc2V0KFxyXG4gICAgICAgIHBhcmFtcy5yZW1lbWJlck1lIHx8XHJcbiAgICAgICAgcmVtZW1iZXJNZVNlcnZpY2UuZ2V0KCkgfHxcclxuICAgICAgICByZW1lbWJlck1lU2VydmljZS5nZXRGcm9tVG9rZW4oYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKSlcclxuICAgICAgKTtcclxuICAgICAgaWYgKHBhcmFtcy5yZWRpcmVjdFVybCkgcm91dGVyLm5hdmlnYXRlKFtwYXJhbXMucmVkaXJlY3RVcmxdKTtcclxuICAgIH0pLFxyXG4gICk7XHJcbn07XHJcblxyXG4vL1JlZjogaHR0cHM6Ly9naXRodWIuY29tL21hbmZyZWRzdGV5ZXIvYW5ndWxhci1vYXV0aDItb2lkYy9pc3N1ZXMvMTIxNFxyXG5leHBvcnQgZnVuY3Rpb24gaXNUb2tlbkV4cGlyZWQoZXhwaXJlRGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICByZXR1cm4gZXhwaXJlRGF0ZSA8IGN1cnJlbnREYXRlO1xyXG59XHJcbiJdfQ==","import { ConfigStateService } from '@abp/ng.core';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { clearOAuthStorage } from './clear-o-auth-storage';\nexport const checkAccessToken = function (injector) {\n const configState = injector.get(ConfigStateService);\n const oAuth = injector.get(OAuthService);\n if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {\n clearOAuthStorage(this.injector);\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYWNjZXNzLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi91dGlscy9jaGVjay1hY2Nlc3MtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQStCLFVBQVUsUUFBa0I7SUFDdEYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQzFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hlY2tBdXRoZW50aWNhdGlvblN0YXRlRm4sIENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBjbGVhck9BdXRoU3RvcmFnZSB9IGZyb20gJy4vY2xlYXItby1hdXRoLXN0b3JhZ2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNoZWNrQWNjZXNzVG9rZW46IENoZWNrQXV0aGVudGljYXRpb25TdGF0ZUZuID0gZnVuY3Rpb24gKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIGNvbnN0IGNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgY29uc3Qgb0F1dGggPSBpbmplY3Rvci5nZXQoT0F1dGhTZXJ2aWNlKTtcclxuICBpZiAob0F1dGguaGFzVmFsaWRBY2Nlc3NUb2tlbigpICYmICFjb25maWdTdGF0ZS5nZXREZWVwKCdjdXJyZW50VXNlci5pZCcpKSB7XHJcbiAgICBjbGVhck9BdXRoU3RvcmFnZSh0aGlzLmluamVjdG9yKTtcclxuICB9XHJcbn07XHJcbiJdfQ==","import { Router } from '@angular/router';\nimport { of } from 'rxjs';\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { OAuthErrorEvent, OAuthService as OAuthService2, OAuthStorage, } from 'angular-oauth2-oidc';\nimport { AbpLocalStorageService, AbpWindowService, ConfigStateService, EnvironmentService, HttpErrorReporterService, SessionStateService, TENANT_KEY, } from '@abp/ng.core';\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\nimport { OAuthErrorFilterService } from '../services';\nimport { isTokenExpired } from '../utils';\nimport { RememberMeService } from '../services/remember-me.service';\nexport class AuthFlowStrategy {\n constructor(injector) {\n this.injector = injector;\n this.catchError = (err) => {\n this.httpErrorReporter.reportError(err);\n return of(null);\n };\n this.httpErrorReporter = injector.get(HttpErrorReporterService);\n this.environment = injector.get(EnvironmentService);\n this.configState = injector.get(ConfigStateService);\n this.oAuthService = injector.get(OAuthService2);\n this.sessionState = injector.get(SessionStateService);\n this.localStorageService = injector.get(AbpLocalStorageService);\n this.oAuthConfig = this.environment.getEnvironment().oAuthConfig || {};\n this.tenantKey = injector.get(TENANT_KEY);\n this.router = injector.get(Router);\n this.oAuthErrorFilterService = injector.get(OAuthErrorFilterService);\n this.rememberMeService = injector.get(RememberMeService);\n this.windowService = injector.get(AbpWindowService);\n this.listenToOauthErrors();\n }\n async init() {\n if (this.oAuthConfig.clientId) {\n const shouldClear = shouldStorageClear(this.oAuthConfig.clientId, this.injector);\n if (shouldClear)\n clearOAuthStorage(this.injector);\n }\n this.oAuthService.configure(this.oAuthConfig);\n this.oAuthService.events\n .pipe(filter(event => event.type === 'token_refresh_error'))\n .subscribe(() => this.navigateToLogin());\n this.navigateToPreviousUrl();\n return this.oAuthService\n .loadDiscoveryDocument()\n .then(() => {\n const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());\n if (isTokenExpire && this.oAuthService.getRefreshToken()) {\n return this.refreshToken();\n }\n return Promise.resolve();\n })\n .catch(this.catchError);\n }\n navigateToPreviousUrl() {\n const { responseType } = this.oAuthConfig;\n if (responseType === 'code') {\n this.oAuthService.events\n .pipe(filter(event => event.type === 'token_received' && !!this.oAuthService.state), take(1), map(() => {\n const redirectUri = decodeURIComponent(this.oAuthService.state);\n if (redirectUri && redirectUri !== '/') {\n return redirectUri;\n }\n return '/';\n }), switchMap(redirectUri => this.configState.getOne$('currentUser').pipe(filter(user => !!user?.isAuthenticated), tap(() => this.router.navigateByUrl(redirectUri)))))\n .subscribe();\n }\n }\n refreshToken() {\n return this.oAuthService.refreshToken().catch(() => clearOAuthStorage(this.injector));\n }\n listenToOauthErrors() {\n this.oAuthService.events\n .pipe(filter(event => event instanceof OAuthErrorEvent), tap((err) => {\n const shouldSkip = this.oAuthErrorFilterService.run(err);\n if (!shouldSkip) {\n clearOAuthStorage(this.injector);\n }\n }), switchMap(() => this.configState.refreshAppState()))\n .subscribe();\n }\n}\nfunction shouldStorageClear(clientId, injector) {\n const storage = injector.get(OAuthStorage);\n const key = 'abpOAuthClientId';\n if (!storage.getItem(key)) {\n storage.setItem(key, clientId);\n return false;\n }\n const shouldClear = storage.getItem(key) !== clientId;\n if (shouldClear)\n storage.setItem(key, clientId);\n return shouldClear;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFFTCxlQUFlLEVBQ2YsWUFBWSxJQUFJLGFBQWEsRUFDN0IsWUFBWSxHQUNiLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFFeEIsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxNQUFNLE9BQWdCLGdCQUFnQjtJQTJCcEMsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUxoQyxlQUFVLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztR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QUcsQ0FBQyxDQUFDLEdBQW9CLEVBQUUsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUNwRDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxRQUFrQjtJQUM5RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDO0lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDdEQsSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgQXV0aENvbmZpZyxcclxuICBPQXV0aEVycm9yRXZlbnQsXHJcbiAgT0F1dGhTZXJ2aWNlIGFzIE9BdXRoU2VydmljZTIsXHJcbiAgT0F1dGhTdG9yYWdlLFxyXG59IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIEFicFdpbmRvd1NlcnZpY2UsXHJcbiAgQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gIEVudmlyb25tZW50U2VydmljZSxcclxuICBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsXHJcbiAgTG9naW5QYXJhbXMsXHJcbiAgU2Vzc2lvblN0YXRlU2VydmljZSxcclxuICBURU5BTlRfS0VZLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcblxyXG5pbXBvcnQgeyBjbGVhck9BdXRoU3RvcmFnZSB9IGZyb20gJy4uL3V0aWxzL2NsZWFyLW8tYXV0aC1zdG9yYWdlJztcclxuaW1wb3J0IHsgT0F1dGhFcnJvckZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IGlzVG9rZW5FeHBpcmVkIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBSZW1lbWJlck1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlbWVtYmVyLW1lLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoOiBib29sZWFuO1xyXG5cclxuICBwcm90ZWN0ZWQgaHR0cEVycm9yUmVwb3J0ZXI6IEh0dHBFcnJvclJlcG9ydGVyU2VydmljZTtcclxuICBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50U2VydmljZTtcclxuICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UyO1xyXG4gIHByb3RlY3RlZCBvQXV0aENvbmZpZyE6IEF1dGhDb25maWc7XHJcbiAgcHJvdGVjdGVkIHNlc3Npb25TdGF0ZTogU2Vzc2lvblN0YXRlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogQWJwTG9jYWxTdG9yYWdlU2VydmljZTtcclxuICBwcm90ZWN0ZWQgcmVtZW1iZXJNZVNlcnZpY2U6IFJlbWVtYmVyTWVTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB3aW5kb3dTZXJ2aWNlOiBBYnBXaW5kb3dTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB0ZW5hbnRLZXk6IHN0cmluZztcclxuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBvQXV0aEVycm9yRmlsdGVyU2VydmljZTogT0F1dGhFcnJvckZpbHRlclNlcnZpY2U7XHJcblxyXG4gIGFic3RyYWN0IGNoZWNrSWZJbnRlcm5hbEF1dGgocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IG5hdmlnYXRlVG9Mb2dpbihxdWVyeVBhcmFtcz86IFBhcmFtcyk6IHZvaWQ7XHJcbiAgYWJzdHJhY3QgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIGFic3RyYWN0IGxvZ2luKHBhcmFtcz86IExvZ2luUGFyYW1zIHwgUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBwcml2YXRlIGNhdGNoRXJyb3IgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgdGhpcy5odHRwRXJyb3JSZXBvcnRlci5yZXBvcnRFcnJvcihlcnIpO1xyXG4gICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIgPSBpbmplY3Rvci5nZXQoSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlKTtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuICAgIHRoaXMuY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICAgIHRoaXMub0F1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9BdXRoU2VydmljZTIpO1xyXG4gICAgdGhpcy5zZXNzaW9uU3RhdGUgPSBpbmplY3Rvci5nZXQoU2Vzc2lvblN0YXRlU2VydmljZSk7XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQWJwTG9jYWxTdG9yYWdlU2VydmljZSk7XHJcbiAgICB0aGlzLm9BdXRoQ29uZmlnID0gdGhpcy5lbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudCgpLm9BdXRoQ29uZmlnIHx8IHt9O1xyXG4gICAgdGhpcy50ZW5hbnRLZXkgPSBpbmplY3Rvci5nZXQoVEVOQU5UX0tFWSk7XHJcbiAgICB0aGlzLnJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xyXG4gICAgdGhpcy5vQXV0aEVycm9yRmlsdGVyU2VydmljZSA9IGluamVjdG9yLmdldChPQXV0aEVycm9yRmlsdGVyU2VydmljZSk7XHJcbiAgICB0aGlzLnJlbWVtYmVyTWVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFJlbWVtYmVyTWVTZXJ2aWNlKTtcclxuICAgIHRoaXMud2luZG93U2VydmljZSA9IGluamVjdG9yLmdldChBYnBXaW5kb3dTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLmxpc3RlblRvT2F1dGhFcnJvcnMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLm9BdXRoQ29uZmlnLmNsaWVudElkKSB7XHJcbiAgICAgIGNvbnN0IHNob3VsZENsZWFyID0gc2hvdWxkU3RvcmFnZUNsZWFyKHRoaXMub0F1dGhDb25maWcuY2xpZW50SWQsIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICBpZiAoc2hvdWxkQ2xlYXIpIGNsZWFyT0F1dGhTdG9yYWdlKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuY29uZmlndXJlKHRoaXMub0F1dGhDb25maWcpO1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVmcmVzaF9lcnJvcicpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvUHJldmlvdXNVcmwoKTtcclxuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZVxyXG4gICAgICAubG9hZERpc2NvdmVyeURvY3VtZW50KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzVG9rZW5FeHBpcmUgPSBpc1Rva2VuRXhwaXJlZCh0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbkV4cGlyYXRpb24oKSk7XHJcbiAgICAgICAgaWYgKGlzVG9rZW5FeHBpcmUgJiYgdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5jYXRjaEVycm9yKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZVRvUHJldmlvdXNVcmwoKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHJlc3BvbnNlVHlwZSB9ID0gdGhpcy5vQXV0aENvbmZpZztcclxuICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICdjb2RlJykge1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVjZWl2ZWQnICYmICEhdGhpcy5vQXV0aFNlcnZpY2Uuc3RhdGUpLFxyXG4gICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMub0F1dGhTZXJ2aWNlLnN0YXRlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZWRpcmVjdFVyaSAmJiByZWRpcmVjdFVyaSAhPT0gJy8nKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0VXJpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gJy8nO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAocmVkaXJlY3RVcmkgPT5cclxuICAgICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUkKCdjdXJyZW50VXNlcicpLnBpcGUoXHJcbiAgICAgICAgICAgICAgZmlsdGVyKHVzZXIgPT4gISF1c2VyPy5pc0F1dGhlbnRpY2F0ZWQpLFxyXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJlZGlyZWN0VXJpKSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKHRoaXMuaW5qZWN0b3IpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub09hdXRoRXJyb3JzKCkge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE9BdXRoRXJyb3JFdmVudCksXHJcbiAgICAgICAgdGFwKChlcnI6IE9BdXRoRXJyb3JFdmVudCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2tpcCA9IHRoaXMub0F1dGhFcnJvckZpbHRlclNlcnZpY2UucnVuKGVycik7XHJcbiAgICAgICAgICBpZiAoIXNob3VsZFNraXApIHtcclxuICAgICAgICAgICAgY2xlYXJPQXV0aFN0b3JhZ2UodGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3VsZFN0b3JhZ2VDbGVhcihjbGllbnRJZDogc3RyaW5nLCBpbmplY3RvcjogSW5qZWN0b3IpOiBib29sZWFuIHtcclxuICBjb25zdCBzdG9yYWdlID0gaW5qZWN0b3IuZ2V0KE9BdXRoU3RvcmFnZSk7XHJcbiAgY29uc3Qga2V5ID0gJ2FicE9BdXRoQ2xpZW50SWQnO1xyXG4gIGlmICghc3RvcmFnZS5nZXRJdGVtKGtleSkpIHtcclxuICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIGNsaWVudElkKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHNob3VsZENsZWFyID0gc3RvcmFnZS5nZXRJdGVtKGtleSkgIT09IGNsaWVudElkO1xyXG4gIGlmIChzaG91bGRDbGVhcikgc3RvcmFnZS5zZXRJdGVtKGtleSwgY2xpZW50SWQpO1xyXG4gIHJldHVybiBzaG91bGRDbGVhcjtcclxufVxyXG4iXX0=","import { DOCUMENT, PLATFORM_ID } from '@angular/core';\nimport { APP_STARTED_WITH_SSR, noop } from '@abp/ng.core';\nimport { filter, from, of, take, tap } from 'rxjs';\nimport { AuthFlowStrategy } from './auth-flow-strategy';\nimport { isTokenExpired } from '../utils';\nimport { isPlatformBrowser } from '@angular/common';\nexport class AuthCodeFlowStrategy extends AuthFlowStrategy {\n constructor(injector) {\n super(injector);\n this.injector = injector;\n this.isInternalAuth = false;\n this.platformId = injector.get(PLATFORM_ID);\n this.appStartedWithSSR = injector.get(APP_STARTED_WITH_SSR);\n this.document = injector.get(DOCUMENT);\n }\n async init() {\n this.checkRememberMeOption();\n this.listenToTokenReceived();\n if (!this.appStartedWithSSR && isPlatformBrowser(this.platformId)) {\n return super\n .init()\n .then(() => this.oAuthService.tryLogin().catch(noop))\n .then(() => {\n this.oAuthService.setupAutomaticSilentRefresh();\n });\n }\n }\n checkRememberMeOption() {\n const accessToken = this.oAuthService.getAccessToken();\n const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());\n let rememberMe = this.rememberMeService.get();\n if (accessToken && !rememberMe) {\n const rememberMeValue = this.rememberMeService.getFromToken(accessToken);\n this.rememberMeService.set(!!rememberMeValue);\n }\n rememberMe = this.rememberMeService.get();\n if (accessToken && isTokenExpire && !rememberMe) {\n this.rememberMeService.remove();\n this.oAuthService.logOut();\n }\n }\n getCultureParams(queryParams) {\n const lang = this.sessionState.getLanguage();\n const culture = { culture: lang, 'ui-culture': lang };\n return { ...(lang && culture), ...queryParams };\n }\n setUICulture() {\n if (isPlatformBrowser(this.platformId)) {\n const urlParams = new URLSearchParams(window.location.search);\n this.configState.uiCultureFromAuthCodeFlow = urlParams.get('ui-culture');\n }\n }\n replaceURLParams() {\n if (isPlatformBrowser(this.platformId)) {\n const location = this.windowService.window.location;\n const history = this.windowService.window.history;\n const query = location.search\n .replace(/([?&])iss=[^&]*&?/, '$1')\n .replace(/([?&])culture=[^&]*&?/, '$1')\n .replace(/([?&])ui-culture=[^&]*&?/, '$1')\n .replace(/[?&]+$/, '');\n const href = location.origin + location.pathname + query + location.hash;\n history.replaceState(null, '', href);\n }\n }\n listenToTokenReceived() {\n if (isPlatformBrowser(this.platformId) && !this.appStartedWithSSR) {\n this.oAuthService.events\n .pipe(filter(event => event.type === 'token_received'), tap(() => {\n //TODO: Investigate how to handle with ssr\n this.setUICulture();\n this.replaceURLParams();\n }), take(1))\n .subscribe();\n }\n }\n navigateToLogin(queryParams) {\n if (isPlatformBrowser(this.platformId)) {\n if (this.appStartedWithSSR) {\n if (this.document.defaultView) {\n this.document.defaultView.location.replace('/authorize');\n }\n }\n else {\n let additionalState = '';\n if (queryParams?.returnUrl) {\n additionalState = queryParams.returnUrl;\n }\n const cultureParams = this.getCultureParams(queryParams);\n this.oAuthService.initCodeFlow(additionalState, cultureParams);\n }\n }\n }\n checkIfInternalAuth(queryParams) {\n if (isPlatformBrowser(this.platformId)) {\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\n return false;\n }\n }\n logout(queryParams) {\n this.rememberMeService.remove();\n if (this.appStartedWithSSR) {\n if (this.document.defaultView) {\n this.document.defaultView.location.replace('/logout');\n }\n }\n else {\n if (queryParams?.noRedirectToLogoutUrl) {\n this.router.navigate(['/']);\n return from(this.oAuthService.revokeTokenAndLogout(true));\n }\n return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));\n }\n }\n login(queryParams) {\n if (isPlatformBrowser(this.platformId)) {\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\n return of(null);\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3N0cmF0ZWdpZXMvYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBWSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFNeEQsWUFBc0IsUUFBa0I7UUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREksYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUwvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU85QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFC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UUFDMUYsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsV0FBb0I7UUFDeEIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdkUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBJbmplY3RvciwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVBQX1NUQVJURURfV0lUSF9TU1IsIG5vb3AgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZyb20sIG9mLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aEZsb3dTdHJhdGVneSB9IGZyb20gJy4vYXV0aC1mbG93LXN0cmF0ZWd5JztcclxuaW1wb3J0IHsgaXNUb2tlbkV4cGlyZWQgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoQ29kZUZsb3dTdHJhdGVneSBleHRlbmRzIEF1dGhGbG93U3RyYXRlZ3kge1xyXG4gIHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3Q7XHJcbiAgcHJvdGVjdGVkIGFwcFN0YXJ0ZWRXaXRoU1NSOiBib29sZWFuO1xyXG4gIHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIHRoaXMucGxhdGZvcm1JZCA9IGluamVjdG9yLmdldChQTEFURk9STV9JRCk7XHJcbiAgICB0aGlzLmFwcFN0YXJ0ZWRXaXRoU1NSID0gaW5qZWN0b3IuZ2V0KEFQUF9TVEFSVEVEX1dJVEhfU1NSKTtcclxuICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3Rvci5nZXQoRE9DVU1FTlQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdCgpIHtcclxuICAgIHRoaXMuY2hlY2tSZW1lbWJlck1lT3B0aW9uKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvVG9rZW5SZWNlaXZlZCgpO1xyXG4gICAgaWYgKCF0aGlzLmFwcFN0YXJ0ZWRXaXRoU1NSICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgcmV0dXJuIHN1cGVyXHJcbiAgICAgICAgLmluaXQoKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMub0F1dGhTZXJ2aWNlLnRyeUxvZ2luKCkuY2F0Y2gobm9vcCkpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUmVtZW1iZXJNZU9wdGlvbigpIHtcclxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5vQXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKTtcclxuICAgIGNvbnN0IGlzVG9rZW5FeHBpcmUgPSBpc1Rva2VuRXhwaXJlZCh0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbkV4cGlyYXRpb24oKSk7XHJcbiAgICBsZXQgcmVtZW1iZXJNZSA9IHRoaXMucmVtZW1iZXJNZVNlcnZpY2UuZ2V0KCk7XHJcbiAgICBpZiAoYWNjZXNzVG9rZW4gJiYgIXJlbWVtYmVyTWUpIHtcclxuICAgICAgY29uc3QgcmVtZW1iZXJNZVZhbHVlID0gdGhpcy5yZW1lbWJlck1lU2VydmljZS5nZXRGcm9tVG9rZW4oYWNjZXNzVG9rZW4pO1xyXG5cclxuICAgICAgdGhpcy5yZW1lbWJlck1lU2VydmljZS5zZXQoISFyZW1lbWJlck1lVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbWVtYmVyTWUgPSB0aGlzLnJlbWVtYmVyTWVTZXJ2aWNlLmdldCgpO1xyXG4gICAgaWYgKGFjY2Vzc1Rva2VuICYmIGlzVG9rZW5FeHBpcmUgJiYgIXJlbWVtYmVyTWUpIHtcclxuICAgICAgdGhpcy5yZW1lbWJlck1lU2VydmljZS5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UubG9nT3V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gICAgY29uc3QgY3VsdHVyZSA9IHsgY3VsdHVyZTogbGFuZywgJ3VpLWN1bHR1cmUnOiBsYW5nIH07XHJcbiAgICByZXR1cm4geyAuLi4obGFuZyAmJiBjdWx0dXJlKSwgLi4ucXVlcnlQYXJhbXMgfTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRVSUN1bHR1cmUoKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgICB0aGlzLmNvbmZpZ1N0YXRlLnVpQ3VsdHVyZUZyb21BdXRoQ29kZUZsb3cgPSB1cmxQYXJhbXMuZ2V0KCd1aS1jdWx0dXJlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVwbGFjZVVSTFBhcmFtcygpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy53aW5kb3dTZXJ2aWNlLndpbmRvdy5sb2NhdGlvbjtcclxuICAgICAgY29uc3QgaGlzdG9yeSA9IHRoaXMud2luZG93U2VydmljZS53aW5kb3cuaGlzdG9yeTtcclxuXHJcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gbG9jYXRpb24uc2VhcmNoXHJcbiAgICAgICAgLnJlcGxhY2UoLyhbPyZdKWlzcz1bXiZdKiY/LywgJyQxJylcclxuICAgICAgICAucmVwbGFjZSgvKFs/Jl0pY3VsdHVyZT1bXiZdKiY/LywgJyQxJylcclxuICAgICAgICAucmVwbGFjZSgvKFs/Jl0pdWktY3VsdHVyZT1bXiZdKiY/LywgJyQxJylcclxuICAgICAgICAucmVwbGFjZSgvWz8mXSskLywgJycpO1xyXG5cclxuICAgICAgY29uc3QgaHJlZiA9IGxvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lICsgcXVlcnkgKyBsb2NhdGlvbi5oYXNoO1xyXG5cclxuICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGhyZWYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvVG9rZW5SZWNlaXZlZCgpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmICF0aGlzLmFwcFN0YXJ0ZWRXaXRoU1NSKSB7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmV2ZW50c1xyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnR5cGUgPT09ICd0b2tlbl9yZWNlaXZlZCcpLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgLy9UT0RPOiBJbnZlc3RpZ2F0ZSBob3cgdG8gaGFuZGxlIHdpdGggc3NyXHJcbiAgICAgICAgICAgIHRoaXMuc2V0VUlDdWx0dXJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVwbGFjZVVSTFBhcmFtcygpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGlmICh0aGlzLmFwcFN0YXJ0ZWRXaXRoU1NSKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcpIHtcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24ucmVwbGFjZSgnL2F1dGhvcml6ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgYWRkaXRpb25hbFN0YXRlID0gJyc7XHJcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zPy5yZXR1cm5VcmwpIHtcclxuICAgICAgICAgIGFkZGl0aW9uYWxTdGF0ZSA9IHF1ZXJ5UGFyYW1zLnJldHVyblVybDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGN1bHR1cmVQYXJhbXMgPSB0aGlzLmdldEN1bHR1cmVQYXJhbXMocXVlcnlQYXJhbXMpO1xyXG4gICAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdyhhZGRpdGlvbmFsU3RhdGUsIGN1bHR1cmVQYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0lmSW50ZXJuYWxBdXRoKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIHRoaXMucmVtZW1iZXJNZVNlcnZpY2UucmVtb3ZlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuYXBwU3RhcnRlZFdpdGhTU1IpIHtcclxuICAgICAgaWYgKHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcpIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2F0aW9uLnJlcGxhY2UoJy9sb2dvdXQnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHF1ZXJ5UGFyYW1zPy5ub1JlZGlyZWN0VG9Mb2dvdXRVcmwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5vQXV0aFNlcnZpY2UucmV2b2tlVG9rZW5BbmRMb2dvdXQodHJ1ZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmcm9tKHRoaXMub0F1dGhTZXJ2aWNlLnJldm9rZVRva2VuQW5kTG9nb3V0KHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ2luKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xyXG4gICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { filter, switchMap, tap } from 'rxjs/operators';\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\nimport { Router } from '@angular/router';\nimport { from } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { AuthFlowStrategy } from './auth-flow-strategy';\nimport { isTokenExpired, pipeToLogin } from '../utils/auth-utils';\nimport { clearOAuthStorage } from '../utils/clear-o-auth-storage';\nexport class AuthPasswordFlowStrategy extends AuthFlowStrategy {\n constructor() {\n super(...arguments);\n this.isInternalAuth = true;\n }\n listenToTokenExpiration() {\n this.oAuthService.events\n .pipe(filter(event => event instanceof OAuthInfoEvent &&\n event.type === 'token_expires' &&\n event.info === 'access_token'))\n .subscribe(() => {\n if (this.oAuthService.getRefreshToken()) {\n this.refreshToken();\n }\n else {\n this.oAuthService.logOut();\n this.rememberMeService.remove();\n this.configState.refreshAppState().subscribe();\n }\n });\n }\n async init() {\n this.checkRememberMeOption();\n return super.init().then(() => this.listenToTokenExpiration());\n }\n checkRememberMeOption() {\n const accessToken = this.oAuthService.getAccessToken();\n const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration());\n const rememberMe = this.rememberMeService.get();\n if (accessToken && isTokenExpire && !rememberMe) {\n this.rememberMeService.remove();\n this.oAuthService.logOut();\n }\n }\n navigateToLogin(queryParams) {\n const router = this.injector.get(Router);\n return router.navigate(['/account/login'], { queryParams });\n }\n checkIfInternalAuth() {\n return true;\n }\n login(params) {\n const tenant = this.sessionState.getTenant();\n return from(this.oAuthService.fetchTokenUsingPasswordFlow(params.username, params.password, new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }))).pipe(pipeToLogin(params, this.injector));\n }\n logout() {\n const router = this.injector.get(Router);\n const noRedirectToLogoutUrl = true;\n return from(this.oAuthService.revokeTokenAndLogout(noRedirectToLogoutUrl)).pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {\n this.rememberMeService.remove();\n router.navigateByUrl('/');\n }));\n }\n refreshToken() {\n return this.oAuthService.refreshToken().catch(() => {\n clearOAuthStorage(this.injector);\n this.rememberMeService.remove();\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wYXNzd29yZC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9zdHJhdGVnaWVzL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbEUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUE5RDs7UUFDVyxtQkFBYyxHQUFHLElBQUksQ0FBQztJQThFakMsQ0FBQztJQTVFUyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2FBQ3JCLElBQUksQ0FDSCxNQUFNLENBQ0osS0FBSyxDQUFDLEVBQUUsQ0FDTixLQUFLLFlBQVksY0FBYztZQUMvQixLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWU7WUFDOUIsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQ2hDLENBQ0Y7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Z0JB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RSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDakQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9BdXRoSW5mb0V2ZW50IH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQXV0aEZsb3dTdHJhdGVneSB9IGZyb20gJy4vYXV0aC1mbG93LXN0cmF0ZWd5JztcclxuaW1wb3J0IHsgaXNUb2tlbkV4cGlyZWQsIHBpcGVUb0xvZ2luIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscyc7XHJcbmltcG9ydCB7IExvZ2luUGFyYW1zIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgY2xlYXJPQXV0aFN0b3JhZ2UgfSBmcm9tICcuLi91dGlscy9jbGVhci1vLWF1dGgtc3RvcmFnZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aFBhc3N3b3JkRmxvd1N0cmF0ZWd5IGV4dGVuZHMgQXV0aEZsb3dTdHJhdGVneSB7XHJcbiAgcmVhZG9ubHkgaXNJbnRlcm5hbEF1dGggPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIGxpc3RlblRvVG9rZW5FeHBpcmF0aW9uKCkge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2ZW50ID0+XHJcbiAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgT0F1dGhJbmZvRXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQudHlwZSA9PT0gJ3Rva2VuX2V4cGlyZXMnICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmluZm8gPT09ICdhY2Nlc3NfdG9rZW4nLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5sb2dPdXQoKTtcclxuICAgICAgICAgIHRoaXMucmVtZW1iZXJNZVNlcnZpY2UucmVtb3ZlKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0KCkge1xyXG4gICAgdGhpcy5jaGVja1JlbWVtYmVyTWVPcHRpb24oKTtcclxuXHJcbiAgICByZXR1cm4gc3VwZXIuaW5pdCgpLnRoZW4oKCkgPT4gdGhpcy5saXN0ZW5Ub1Rva2VuRXhwaXJhdGlvbigpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tSZW1lbWJlck1lT3B0aW9uKCkge1xyXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSB0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xyXG4gICAgY29uc3QgaXNUb2tlbkV4cGlyZSA9IGlzVG9rZW5FeHBpcmVkKHRoaXMub0F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuRXhwaXJhdGlvbigpKTtcclxuICAgIGNvbnN0IHJlbWVtYmVyTWUgPSB0aGlzLnJlbWVtYmVyTWVTZXJ2aWNlLmdldCgpO1xyXG4gICAgaWYgKGFjY2Vzc1Rva2VuICYmIGlzVG9rZW5FeHBpcmUgJiYgIXJlbWVtYmVyTWUpIHtcclxuICAgICAgdGhpcy5yZW1lbWJlck1lU2VydmljZS5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UubG9nT3V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcbiAgICByZXR1cm4gcm91dGVyLm5hdmlnYXRlKFsnL2FjY291bnQvbG9naW4nXSwgeyBxdWVyeVBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZJbnRlcm5hbEF1dGgoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvZ2luKHBhcmFtczogTG9naW5QYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdGVuYW50ID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0VGVuYW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmZldGNoVG9rZW5Vc2luZ1Bhc3N3b3JkRmxvdyhcclxuICAgICAgICBwYXJhbXMudXNlcm5hbWUsXHJcbiAgICAgICAgcGFyYW1zLnBhc3N3b3JkLFxyXG4gICAgICAgIG5ldyBIdHRwSGVhZGVycyh7IC4uLih0ZW5hbnQgJiYgdGVuYW50LmlkICYmIHsgW3RoaXMudGVuYW50S2V5XTogdGVuYW50LmlkIH0pIH0pLFxyXG4gICAgICApLFxyXG4gICAgKS5waXBlKHBpcGVUb0xvZ2luKHBhcmFtcywgdGhpcy5pbmplY3RvcikpO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcclxuICAgIGNvbnN0IG5vUmVkaXJlY3RUb0xvZ291dFVybCA9IHRydWU7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLm9BdXRoU2VydmljZS5yZXZva2VUb2tlbkFuZExvZ291dChub1JlZGlyZWN0VG9Mb2dvdXRVcmwpKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW1lbWJlck1lU2VydmljZS5yZW1vdmUoKTtcclxuICAgICAgICByb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IHtcclxuICAgICAgY2xlYXJPQXV0aFN0b3JhZ2UodGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIHRoaXMucmVtZW1iZXJNZVNlcnZpY2UucmVtb3ZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19","import { AuthCodeFlowStrategy } from '../strategies/auth-code-flow-strategy';\nimport { AuthPasswordFlowStrategy } from '../strategies/auth-password-flow-strategy';\nexport const AUTH_FLOW_STRATEGY = {\n Code(injector) {\n return new AuthCodeFlowStrategy(injector);\n },\n Password(injector) {\n return new AuthPasswordFlowStrategy(injector);\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi90b2tlbnMvYXV0aC1mbG93LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLElBQUksQ0FBQyxRQUFrQjtRQUNyQixPQUFPLElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVEsQ0FBQyxRQUFrQjtRQUN6QixPQUFPLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29kZUZsb3dTdHJhdGVneSB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvYXV0aC1jb2RlLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3kgfSBmcm9tICcuLi9zdHJhdGVnaWVzL2F1dGgtcGFzc3dvcmQtZmxvdy1zdHJhdGVneSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSF9GTE9XX1NUUkFURUdZID0ge1xyXG4gIENvZGUoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICByZXR1cm4gbmV3IEF1dGhDb2RlRmxvd1N0cmF0ZWd5KGluamVjdG9yKTtcclxuICB9LFxyXG4gIFBhc3N3b3JkKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgcmV0dXJuIG5ldyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3koaW5qZWN0b3IpO1xyXG4gIH0sXHJcbn07XHJcbiJdfQ==","import { Injectable, Injector, inject, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { from, lastValueFrom, EMPTY } from 'rxjs';\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { APP_STARTED_WITH_SSR } from '@abp/ng.core';\nimport { EnvironmentService } from '@abp/ng.core';\nimport { AUTH_FLOW_STRATEGY } from '../tokens/auth-flow-strategy';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class AbpOAuthService {\n get oidc() {\n return this.oAuthService.oidc;\n }\n set oidc(value) {\n this.oAuthService.oidc = value;\n }\n get isInternalAuth() {\n return this.strategy.isInternalAuth;\n }\n constructor() {\n this.injector = inject(Injector);\n this.appStartedWithSsr = this.injector.get(APP_STARTED_WITH_SSR);\n this.platformId = this.injector.get(PLATFORM_ID);\n this.document = this.injector.get(DOCUMENT);\n this.oAuthService = this.injector.get(OAuthService);\n }\n async init() {\n const environmentService = this.injector.get(EnvironmentService);\n const result$ = environmentService.getEnvironment$().pipe(map(env => env?.oAuthConfig), filter(Boolean), tap(oAuthConfig => {\n this.strategy =\n oAuthConfig.responseType === 'code'\n ? AUTH_FLOW_STRATEGY.Code(this.injector)\n : AUTH_FLOW_STRATEGY.Password(this.injector);\n }), switchMap(() => from(this.strategy.init())), take(1));\n return await lastValueFrom(result$);\n }\n logout(queryParams) {\n if (!this.strategy) {\n return EMPTY;\n }\n return this.strategy.logout(queryParams);\n }\n navigateToLogin(queryParams) {\n this.strategy.navigateToLogin(queryParams);\n }\n login(params) {\n return this.strategy.login(params);\n }\n get isAuthenticated() {\n return this.oAuthService.hasValidAccessToken();\n }\n loginUsingGrant(grantType, parameters, headers) {\n const { clientId: client_id, dummyClientSecret: client_secret } = this.oAuthService;\n const access_token = this.oAuthService.getAccessToken();\n const p = {\n access_token,\n grant_type: grantType,\n client_id,\n ...parameters,\n };\n if (client_secret) {\n p['client_secret'] = client_secret;\n }\n return this.oAuthService.fetchTokenUsingGrant(grantType, p, headers);\n }\n getRefreshToken() {\n return this.oAuthService.getRefreshToken();\n }\n getAccessToken() {\n return this.oAuthService.getAccessToken();\n }\n refreshToken() {\n if (isPlatformBrowser(this.platformId) && this.appStartedWithSsr) {\n this.document.defaultView?.location.replace('/authorize');\n return Promise.resolve();\n }\n return this.oAuthService.refreshToken();\n }\n getAccessTokenExpiration() {\n return this.oAuthService.getAccessTokenExpiration();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvc2VydmljZXMvb2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsSUFBSSxFQUFjLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQW1CLG9CQUFvQixFQUE2QixNQUFNLGNBQWMsQ0FBQztBQUVoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sZUFBZTtJQVMxQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7UUFwQlUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixzQkFBaUIs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Q0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN0RCxDQUFDOzhHQXRHVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QsIFBMQVRGT1JNX0lELCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBsYXN0VmFsdWVGcm9tLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFicEF1dGhSZXNwb25zZSwgQVBQX1NUQVJURURfV0lUSF9TU1IsIElBdXRoU2VydmljZSwgTG9naW5QYXJhbXMgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBBdXRoRmxvd1N0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcyc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEFVVEhfRkxPV19TVFJBVEVHWSB9IGZyb20gJy4uL3Rva2Vucy9hdXRoLWZsb3ctc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBPQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBJQXV0aFNlcnZpY2Uge1xyXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcbiAgcHJpdmF0ZSBhcHBTdGFydGVkV2l0aFNzciA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFQUF9TVEFSVEVEX1dJVEhfU1NSKTtcclxuICBwcml2YXRlIHBsYXRmb3JtSWQgPSB0aGlzLmluamVjdG9yLmdldChQTEFURk9STV9JRCk7XHJcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IHRoaXMuaW5qZWN0b3IuZ2V0KERPQ1VNRU5UKTtcclxuXHJcbiAgcHJpdmF0ZSBzdHJhdGVneSE6IEF1dGhGbG93U3RyYXRlZ3k7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZTtcclxuXHJcbiAgZ2V0IG9pZGMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2Uub2lkYztcclxuICB9XHJcblxyXG4gIHNldCBvaWRjKHZhbHVlKSB7XHJcbiAgICB0aGlzLm9BdXRoU2VydmljZS5vaWRjID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnRlcm5hbEF1dGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVneS5pc0ludGVybmFsQXV0aDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5vQXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPQXV0aFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdCgpIHtcclxuICAgIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50U2VydmljZSk7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0JCA9IGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCQoKS5waXBlKFxyXG4gICAgICBtYXAoZW52ID0+IGVudj8ub0F1dGhDb25maWcpLFxyXG4gICAgICBmaWx0ZXIoQm9vbGVhbiksXHJcbiAgICAgIHRhcChvQXV0aENvbmZpZyA9PiB7XHJcbiAgICAgICAgdGhpcy5zdHJhdGVneSA9XHJcbiAgICAgICAgICBvQXV0aENvbmZpZy5yZXNwb25zZVR5cGUgPT09ICdjb2RlJ1xyXG4gICAgICAgICAgICA/IEFVVEhfRkxPV19TVFJBVEVHWS5Db2RlKHRoaXMuaW5qZWN0b3IpXHJcbiAgICAgICAgICAgIDogQVVUSF9GTE9XX1NUUkFURUdZLlBhc3N3b3JkKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IGZyb20odGhpcy5zdHJhdGVneS5pbml0KCkpKSxcclxuICAgICAgdGFrZSgxKSxcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IGxhc3RWYWx1ZUZyb20ocmVzdWx0JCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKCF0aGlzLnN0cmF0ZWd5KSB7XHJcbiAgICAgIHJldHVybiBFTVBUWTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5LmxvZ291dChxdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcclxuICAgIHRoaXMuc3RyYXRlZ3kubmF2aWdhdGVUb0xvZ2luKHF1ZXJ5UGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGxvZ2luKHBhcmFtczogTG9naW5QYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5LmxvZ2luKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcclxuICB9XHJcblxyXG4gIGxvZ2luVXNpbmdHcmFudChcclxuICAgIGdyYW50VHlwZTogc3RyaW5nLFxyXG4gICAgcGFyYW1ldGVyczogb2JqZWN0LFxyXG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzLFxyXG4gICk6IFByb21pc2U8QWJwQXV0aFJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCB7IGNsaWVudElkOiBjbGllbnRfaWQsIGR1bW15Q2xpZW50U2VjcmV0OiBjbGllbnRfc2VjcmV0IH0gPSB0aGlzLm9BdXRoU2VydmljZTtcclxuICAgIGNvbnN0IGFjY2Vzc190b2tlbiA9IHRoaXMub0F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICBjb25zdCBwID0ge1xyXG4gICAgICBhY2Nlc3NfdG9rZW4sXHJcbiAgICAgIGdyYW50X3R5cGU6IGdyYW50VHlwZSxcclxuICAgICAgY2xpZW50X2lkLFxyXG4gICAgICAuLi5wYXJhbWV0ZXJzLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY2xpZW50X3NlY3JldCkge1xyXG4gICAgICBwWydjbGllbnRfc2VjcmV0J10gPSBjbGllbnRfc2VjcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5mZXRjaFRva2VuVXNpbmdHcmFudChncmFudFR5cGUsIHAsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVmcmVzaFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBY2Nlc3NUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTxBYnBBdXRoUmVzcG9uc2UgfCB2b2lkPiB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLmFwcFN0YXJ0ZWRXaXRoU3NyKSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LmxvY2F0aW9uLnJlcGxhY2UoJy9hdXRob3JpemUnKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWNjZXNzVG9rZW5FeHBpcmF0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW5FeHBpcmF0aW9uKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Injectable, signal } from '@angular/core';\nimport { AbstractAuthErrorFilter } from '@abp/ng.core';\nimport * as i0 from \"@angular/core\";\nexport class OAuthErrorFilterService extends AbstractAuthErrorFilter {\n constructor() {\n super(...arguments);\n this._filters = signal([]);\n this.filters = this._filters.asReadonly();\n }\n get(id) {\n return this._filters().find(({ id: _id }) => _id === id);\n }\n add(filter) {\n this._filters.update(items => [...items, filter]);\n }\n patch(item) {\n const _item = this.filters().find(({ id }) => id === item.id);\n if (!_item) {\n return;\n }\n Object.assign(_item, item);\n }\n remove(id) {\n const item = this.filters().find(({ id: _id }) => _id === id);\n if (!item) {\n return;\n }\n this._filters.update(items => items.filter(({ id: _id }) => _id !== id));\n }\n run(event) {\n return this.filters()\n .filter(({ executable }) => !!executable)\n .map(({ execute }) => execute(event))\n .some(item => item);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthErrorFilterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthErrorFilterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: OAuthErrorFilterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtZXJyb3ItZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3NlcnZpY2VzL29hdXRoLWVycm9yLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSxjQUFjLENBQUM7O0FBR3hFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFHNUM7SUFKRDs7UUFLcUIsYUFBUSxHQUFHLE1BQU0sQ0FBMEMsRUFBRSxDQUFDLENBQUM7UUFDekUsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7S0FrQy9DO0lBaENDLEdBQUcsQ0FBQyxFQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQXdDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBK0M7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRTthQUNsQixNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQXRDVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQURWLE1BQU07OzJGQUNuQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdEF1dGhFcnJvckZpbHRlciwgQXV0aEVycm9yRmlsdGVyIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBPQXV0aEVycm9yRmlsdGVyU2VydmljZSBleHRlbmRzIEFic3RyYWN0QXV0aEVycm9yRmlsdGVyPFxyXG4gIEF1dGhFcnJvckZpbHRlcjxPQXV0aEVycm9yRXZlbnQ+LFxyXG4gIE9BdXRoRXJyb3JFdmVudFxyXG4+IHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2ZpbHRlcnMgPSBzaWduYWw8QXJyYXk8QXV0aEVycm9yRmlsdGVyPE9BdXRoRXJyb3JFdmVudD4+PihbXSk7XHJcbiAgcmVhZG9ubHkgZmlsdGVycyA9IHRoaXMuX2ZpbHRlcnMuYXNSZWFkb25seSgpO1xyXG5cclxuICBnZXQoaWQ6IHN0cmluZyk6IEF1dGhFcnJvckZpbHRlcjxPQXV0aEVycm9yRXZlbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzKCkuZmluZCgoeyBpZDogX2lkIH0pID0+IF9pZCA9PT0gaWQpO1xyXG4gIH1cclxuXHJcbiAgYWRkKGZpbHRlcjogQXV0aEVycm9yRmlsdGVyPE9BdXRoRXJyb3JFdmVudD4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpbHRlcnMudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgZmlsdGVyXSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaChpdGVtOiBQYXJ0aWFsPEF1dGhFcnJvckZpbHRlcjxPQXV0aEVycm9yRXZlbnQ+Pik6IHZvaWQge1xyXG4gICAgY29uc3QgX2l0ZW0gPSB0aGlzLmZpbHRlcnMoKS5maW5kKCh7IGlkIH0pID0+IGlkID09PSBpdGVtLmlkKTtcclxuICAgIGlmICghX2l0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oX2l0ZW0sIGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcnMoKS5maW5kKCh7IGlkOiBfaWQgfSkgPT4gX2lkID09PSBpZCk7XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2ZpbHRlcnMudXBkYXRlKGl0ZW1zID0+IGl0ZW1zLmZpbHRlcigoeyBpZDogX2lkIH0pID0+IF9pZCAhPT0gaWQpKTtcclxuICB9XHJcblxyXG4gIHJ1bihldmVudDogT0F1dGhFcnJvckV2ZW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzKClcclxuICAgICAgLmZpbHRlcigoeyBleGVjdXRhYmxlIH0pID0+ICEhZXhlY3V0YWJsZSlcclxuICAgICAgLm1hcCgoeyBleGVjdXRlIH0pID0+IGV4ZWN1dGUoZXZlbnQpKVxyXG4gICAgICAuc29tZShpdGVtID0+IGl0ZW0pO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BrowserTokenStorageService {\n getItem(key) {\n return this.readCookie(key);\n }\n removeItem(key) {\n this.removeCookie(key);\n }\n setItem(key, data) {\n this.writeCookie(key, data);\n }\n readCookie(name) {\n if (typeof document === 'undefined')\n return null;\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\n return match ? decodeURIComponent(match[2]) : null;\n }\n writeCookie(name, value, days = 7) {\n if (typeof document === 'undefined')\n return;\n const expires = new Date(Date.now() + days * 86400000).toUTCString();\n document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/; Secure; SameSite=Lax`;\n }\n removeCookie(name) {\n if (typeof document === 'undefined')\n return;\n document.cookie = `${name}=; Max-Age=0; path=/;`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrowserTokenStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrowserTokenStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrowserTokenStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci10b2tlbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9vYXV0aC9zcmMvbGliL3NlcnZpY2VzL2Jyb3dzZXItdG9rZW4tc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTywwQkFBMEI7SUFDckMsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDL0MsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsT0FBTyxnQ0FBZ0MsQ0FBQztJQUM3RyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUM1QyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQztJQUNuRCxDQUFDOzhHQTVCVSwwQkFBMEI7a0hBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VyVG9rZW5TdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIE9BdXRoU3RvcmFnZSB7XHJcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkQ29va2llKGtleSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUNvb2tpZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLndyaXRlQ29va2llKGtleSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICByZWFkQ29va2llKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICc9KFteO10rKScpKTtcclxuICAgIHJldHVybiBtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFsyXSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVDb29raWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBkYXlzID0gNyk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuICAgIGNvbnN0IGV4cGlyZXMgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgZGF5cyAqIDg2NDAwMDAwKS50b1VUQ1N0cmluZygpO1xyXG4gICAgZG9jdW1lbnQuY29va2llID0gYCR7bmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfTsgZXhwaXJlcz0ke2V4cGlyZXN9OyBwYXRoPS87IFNlY3VyZTsgU2FtZVNpdGU9TGF4YDtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNvb2tpZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XHJcbiAgICBkb2N1bWVudC5jb29raWUgPSBgJHtuYW1lfT07IE1heC1BZ2U9MDsgcGF0aD0vO2A7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { AuthService, AuthGuard, authGuard, asyncAuthGuard, ApiInterceptor, PIPE_TO_LOGIN_FN_KEY, CHECK_AUTHENTICATION_STATE_FN_KEY, AuthErrorFilterService, } from '@abp/ng.core';\nimport { makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\nimport { AbpOAuthGuard, abpOAuthGuard, asyncAbpOAuthGuard, } from '../guards';\nimport { OAuthConfigurationHandler } from '../handlers';\nimport { OAuthApiInterceptor } from '../interceptors';\nimport { AbpOAuthService, BrowserTokenStorageService, OAuthErrorFilterService } from '../services';\nimport { pipeToLogin, checkAccessToken, oAuthStorageFactory } from '../utils';\nimport { NavigateToManageProfileProvider } from './navigate-to-manage-profile.provider';\nimport { ServerTokenStorageService } from '../services/server-token-storage.service';\nexport function provideAbpOAuth() {\n const providers = [\n {\n provide: AuthService,\n useClass: AbpOAuthService,\n },\n {\n provide: AuthGuard,\n useClass: AbpOAuthGuard,\n },\n {\n provide: authGuard,\n useValue: abpOAuthGuard,\n },\n {\n provide: asyncAuthGuard,\n useValue: asyncAbpOAuthGuard,\n },\n {\n provide: ApiInterceptor,\n useClass: OAuthApiInterceptor,\n },\n {\n provide: PIPE_TO_LOGIN_FN_KEY,\n useValue: pipeToLogin,\n },\n {\n provide: CHECK_AUTHENTICATION_STATE_FN_KEY,\n useValue: checkAccessToken,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useExisting: ApiInterceptor,\n multi: true,\n },\n NavigateToManageProfileProvider,\n provideAppInitializer(() => {\n inject(OAuthConfigurationHandler);\n }),\n OAuthModule.forRoot().providers,\n ServerTokenStorageService,\n BrowserTokenStorageService,\n {\n provide: OAuthStorage,\n useFactory: oAuthStorageFactory,\n },\n { provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService },\n ];\n return makeEnvironmentProviders(providers);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtbW9kdWxlLWNvbmZpZy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL29hdXRoL3NyYy9saWIvcHJvdmlkZXJzL29hdXRoLW1vZHVsZS1jb25maWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGlDQUFpQyxFQUNqQyxzQkFBc0IsR0FDdkIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFZLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixHQUFJLE1BQU0sV0FBVyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFckYsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxTQUFTLEdBQUc7UUFDaEI7WUFDRSxPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsZUFBZTtTQUMxQjtRQUNEO1lBQ0UsT0FBTyxFQUFFLFNBQVM7WUFDbEIsUUFBUSxFQUFFLGFBQWE7U0FDeEI7UUFDRDtZQUNFLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLFFBQVEsRUFBRSxhQUFhO1NBQ3hCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsa0JBQWtCO1NBQzdCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsbUJBQW1CO1NBQzlCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsb0JBQW9CO1lBQzdCLFFBQVEsRUFBRSxXQUFXO1NBQ3RCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsaUNBQWlDO1lBQzFDLFFBQVEsRUFBRSxnQkFBZ0I7U0FDM0I7UUFDRDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLGNBQWM7WUFDM0IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELCtCQUErQjtRQUMvQixxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDekIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQXVCO1FBQzdDLHlCQUF5QjtRQUN6QiwwQkFBMEI7UUFDMUI7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsbUJBQW1CO1NBQ2hDO1FBQ0QsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFO0tBQzFFLENBQUM7SUFFRixPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLFxyXG4gIEF1dGhHdWFyZCxcclxuICBhdXRoR3VhcmQsXHJcbiAgYXN5bmNBdXRoR3VhcmQsXHJcbiAgQXBpSW50ZXJjZXB0b3IsXHJcbiAgUElQRV9UT19MT0dJTl9GTl9LRVksXHJcbiAgQ0hFQ0tfQVVUSEVOVElDQVRJT05fU1RBVEVfRk5fS0VZLFxyXG4gIEF1dGhFcnJvckZpbHRlclNlcnZpY2UsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgUHJvdmlkZXIsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycywgaW5qZWN0LCBwcm92aWRlQXBwSW5pdGlhbGl6ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9BdXRoTW9kdWxlLCBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgQWJwT0F1dGhHdWFyZCwgYWJwT0F1dGhHdWFyZCwgYXN5bmNBYnBPQXV0aEd1YXJkLCAgfSBmcm9tICcuLi9ndWFyZHMnO1xyXG5pbXBvcnQgeyBPQXV0aENvbmZpZ3VyYXRpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGFuZGxlcnMnO1xyXG5pbXBvcnQgeyBPQXV0aEFwaUludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0b3JzJztcclxuaW1wb3J0IHsgQWJwT0F1dGhTZXJ2aWNlLCBCcm93c2VyVG9rZW5TdG9yYWdlU2VydmljZSwgT0F1dGhFcnJvckZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IHBpcGVUb0xvZ2luLCBjaGVja0FjY2Vzc1Rva2VuLCBvQXV0aFN0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0ZVRvTWFuYWdlUHJvZmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9uYXZpZ2F0ZS10by1tYW5hZ2UtcHJvZmlsZS5wcm92aWRlcic7XHJcbmltcG9ydCB7IFNlcnZlclRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXJ2ZXItdG9rZW4tc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQWJwT0F1dGgoKSB7XHJcbiAgY29uc3QgcHJvdmlkZXJzID0gW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBdXRoU2VydmljZSxcclxuICAgICAgdXNlQ2xhc3M6IEFicE9BdXRoU2VydmljZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEF1dGhHdWFyZCxcclxuICAgICAgdXNlQ2xhc3M6IEFicE9BdXRoR3VhcmQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBhdXRoR3VhcmQsXHJcbiAgICAgIHVzZVZhbHVlOiBhYnBPQXV0aEd1YXJkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogYXN5bmNBdXRoR3VhcmQsXHJcbiAgICAgIHVzZVZhbHVlOiBhc3luY0FicE9BdXRoR3VhcmQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBcGlJbnRlcmNlcHRvcixcclxuICAgICAgdXNlQ2xhc3M6IE9BdXRoQXBpSW50ZXJjZXB0b3IsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBQSVBFX1RPX0xPR0lOX0ZOX0tFWSxcclxuICAgICAgdXNlVmFsdWU6IHBpcGVUb0xvZ2luLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQ0hFQ0tfQVVUSEVOVElDQVRJT05fU1RBVEVfRk5fS0VZLFxyXG4gICAgICB1c2VWYWx1ZTogY2hlY2tBY2Nlc3NUb2tlbixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogQXBpSW50ZXJjZXB0b3IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIE5hdmlnYXRlVG9NYW5hZ2VQcm9maWxlUHJvdmlkZXIsXHJcbiAgICBwcm92aWRlQXBwSW5pdGlhbGl6ZXIoKCkgPT4ge1xyXG4gICAgICBpbmplY3QoT0F1dGhDb25maWd1cmF0aW9uSGFuZGxlcik7XHJcbiAgICB9KSxcclxuICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKS5wcm92aWRlcnMgYXMgUHJvdmlkZXJbXSxcclxuICAgIFNlcnZlclRva2VuU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBCcm93c2VyVG9rZW5TdG9yYWdlU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogT0F1dGhTdG9yYWdlLFxyXG4gICAgICB1c2VGYWN0b3J5OiBvQXV0aFN0b3JhZ2VGYWN0b3J5LFxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogQXV0aEVycm9yRmlsdGVyU2VydmljZSwgdXNlRXhpc3Rpbmc6IE9BdXRoRXJyb3JGaWx0ZXJTZXJ2aWNlIH0sXHJcbiAgXTtcclxuXHJcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xyXG59XHJcbiJdfQ==","import { NgModule } from '@angular/core';\nimport { provideAbpOAuth } from './providers';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated AbpOAuthModule is deprecated use `provideAbpOAuth` *function* instead.\n */\nexport class AbpOAuthModule {\n static forRoot() {\n return {\n ngModule: AbpOAuthModule,\n providers: [provideAbpOAuth()],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpOAuthModule, decorators: [{\n type: NgModule\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2xpYi9vYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFOUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMvQixDQUFDO0lBQ0osQ0FBQzs4R0FOVSxjQUFjOytHQUFkLGNBQWM7K0dBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHByb3ZpZGVBYnBPQXV0aCB9IGZyb20gJy4vcHJvdmlkZXJzJztcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCBBYnBPQXV0aE1vZHVsZSBpcyBkZXByZWNhdGVkIHVzZSBgcHJvdmlkZUFicE9BdXRoYCAqZnVuY3Rpb24qIGluc3RlYWQuXHJcbiAqL1xyXG5ATmdNb2R1bGUoKVxyXG5leHBvcnQgY2xhc3MgQWJwT0F1dGhNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QWJwT0F1dGhNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBYnBPQXV0aE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZUFicE9BdXRoKCldLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLm9hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvb2F1dGgvc3JjL2FicC1uZy5vYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19"],"names":["map","filter","OAuthService2","take","tap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abp-ng.oauth.mjs","sources":["../../../../packages/oauth/src/lib/providers/navigate-to-manage-profile.provider.ts","../../../../packages/oauth/src/lib/guards/oauth.guard.ts","../../../../packages/oauth/src/lib/handlers/oauth-configuration.handler.ts","../../../../packages/oauth/src/lib/interceptors/api.interceptor.ts","../../../../packages/oauth/src/lib/utils/clear-o-auth-storage.ts","../../../../packages/oauth/src/lib/tokens/cookies.ts","../../../../packages/oauth/src/lib/services/server-token-storage.service.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/services/browser-token-storage.service.ts","../../../../packages/oauth/src/lib/services/memory-token-storage.service.ts","../../../../packages/oauth/src/lib/providers/oauth-module-config.provider.ts","../../../../packages/oauth/src/lib/oauth.module.ts","../../../../packages/oauth/src/abp-ng.oauth.ts"],"sourcesContent":["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 { Injectable, inject, PLATFORM_ID, RESPONSE_INIT } from '@angular/core';\r\nimport {\r\n UrlTree,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n CanActivateFn, Params,\r\n} from '@angular/router';\r\n\r\nimport { Observable, timer, filter, take, map, firstValueFrom, timeout, catchError, of } from 'rxjs';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\n\r\nimport { AuthService, IAbpGuard, EnvironmentService } from '@abp/ng.core';\r\nimport { isPlatformServer } from '@angular/common';\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 const platformId = inject(PLATFORM_ID);\r\n const resInit = inject(RESPONSE_INIT);\r\n const environmentService = inject(EnvironmentService);\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 if (isPlatformServer(platformId) && resInit) {\r\n const ssrAuthorizationUrl = environmentService.getEnvironment().oAuthConfig.ssrAuthorizationUrl;\r\n const url = buildLoginUrl(ssrAuthorizationUrl, params);\r\n const headers = new Headers(resInit.headers);\r\n headers.set('Location', url);\r\n resInit.status = 302;\r\n resInit.statusText = 'Found';\r\n resInit.headers = headers;\r\n return;\r\n }\r\n authService.navigateToLogin(params);\r\n return false;\r\n};\r\n\r\nexport const buildLoginUrl = (path: string, params?: Params): string => {\r\n if (!params || Object.keys(params).length === 0) return path;\r\n const usp = new URLSearchParams();\r\n for (const [k, v] of Object.entries(params)) {\r\n if (v == null) continue;\r\n Array.isArray(v) ? v.forEach(x => usp.append(k, String(x))) : usp.set(k, String(v));\r\n }\r\n return `${path}?${usp.toString()}`;\r\n}\r\n\r\nexport const asyncAbpOAuthGuard: 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 const environmentService = inject(EnvironmentService);\r\n const platformId = inject(PLATFORM_ID);\r\n const resInit = inject(RESPONSE_INIT);\r\n\r\n const { oAuthConfig } = environmentService.getEnvironment();\r\n\r\n if (oAuthConfig?.responseType === 'code') {\r\n return firstValueFrom(\r\n timer(0, 100).pipe(\r\n map(() => oAuthService.hasValidAccessToken()),\r\n filter(Boolean),\r\n take(1),\r\n timeout(3000),\r\n catchError(() => {\r\n if (isPlatformServer(platformId) && resInit) {\r\n const ssrAuthorizationUrl = environmentService.getEnvironment().oAuthConfig.ssrAuthorizationUrl;\r\n const url = buildLoginUrl(ssrAuthorizationUrl, { returnUrl: state.url });\r\n const headers = new Headers(resInit.headers);\r\n headers.set('Location', url);\r\n resInit.status = 302;\r\n resInit.statusText = 'Found';\r\n resInit.headers = headers;\r\n return;\r\n }\r\n authService.navigateToLogin({ returnUrl: state.url });\r\n return of(false);\r\n })\r\n )\r\n );\r\n }\r\n\r\n if (oAuthService.hasValidAccessToken()) {\r\n return true;\r\n }\r\n\r\n authService.navigateToLogin({ returnUrl: state.url });\r\n return false;\r\n};\r\n","import { Injectable, inject } 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 private oAuthService = inject(OAuthService);\r\n private environmentService = inject(EnvironmentService);\r\n private options = inject<ABP.Root>(CORE_OPTIONS);\r\n\r\n constructor() {\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 { HttpEvent, HttpHandler, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\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 private oAuthService = inject(OAuthService);\r\n private sessionState = inject(SessionStateService);\r\n private httpWaitService = inject(HttpWaitService);\r\n private tenantKey = inject(TENANT_KEY);\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\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 { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { Injector } from '@angular/core';\r\n\r\nexport function clearOAuthStorage(injector: Injector) {\r\n const storage = injector.get(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 { InjectionToken } from '@angular/core';\r\n\r\nexport const COOKIES = new InjectionToken<string>('COOKIES');\r\n","import { inject, Inject, Injectable, Optional } from '@angular/core';\r\nimport { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { REQUEST } from '@angular/core';\r\nimport { COOKIES } from '../tokens';\r\n\r\n@Injectable({ providedIn: null })\r\nexport class ServerTokenStorageService implements OAuthStorage {\r\n private cookies = new Map<string, string>();\r\n // For server builders where REQUEST injection is not possible, cookies can be provided via COOKIES token\r\n private cookiesStr = inject<string>(COOKIES, { optional: true });\r\n\r\n constructor(@Optional() @Inject(REQUEST) private req: Request | null) {\r\n const cookieHeader = this.req?.headers.get('cookie') ?? this.cookiesStr ?? '';\r\n for (const part of cookieHeader.split(';')) {\r\n const i = part.indexOf('=');\r\n if (i > -1) {\r\n const k = part.slice(0, i).trim();\r\n const v = decodeURIComponent(part.slice(i + 1).trim());\r\n this.cookies.set(k, v);\r\n }\r\n }\r\n }\r\n\r\n getItem(key: string): string {\r\n const fromCookie = this.cookies.get(key);\r\n if (fromCookie) {\r\n return fromCookie;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n setItem(_k: string, _v: string): void {}\r\n removeItem(_k: string): void {}\r\n}\r\n","import { inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { ServerTokenStorageService } from '../services/server-token-storage.service';\r\nimport { BrowserTokenStorageService, MemoryTokenStorageService } from '../services';\r\nimport { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { APP_STARTED_WITH_SSR } from '@abp/ng.core';\r\n\r\nexport class MockStorage implements Storage {\r\n private data = new Map<string, string>();\r\n get length() {\r\n return this.data.size;\r\n }\r\n clear() {\r\n this.data.clear();\r\n }\r\n getItem(key: string) {\r\n return this.data.get(key) || null;\r\n }\r\n key(index: number) {\r\n return Array.from(this.data.keys())[index] || null;\r\n }\r\n removeItem(key: string) {\r\n this.data.delete(key);\r\n }\r\n setItem(key: string, value: string) {\r\n this.data.set(key, value);\r\n }\r\n}\r\n\r\nexport function oAuthStorageFactory(): OAuthStorage {\r\n const platformId = inject(PLATFORM_ID);\r\n const appStartedWithSSR = inject(APP_STARTED_WITH_SSR);\r\n if (appStartedWithSSR) {\r\n return isPlatformBrowser(platformId)\r\n ? inject(BrowserTokenStorageService)\r\n : inject(ServerTokenStorageService);\r\n }\r\n return inject(MemoryTokenStorageService);\r\n}\r\n","import {\r\n AbpCookieStorageService,\r\n AbpLocalStorageService,\r\n APP_STARTED_WITH_SSR,\r\n} 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 protected readonly cookieStorageService = inject(AbpCookieStorageService);\r\n private appStartedWithSsr = inject(APP_STARTED_WITH_SSR, { optional: true });\r\n\r\n set(remember: boolean) {\r\n if (this.appStartedWithSsr) {\r\n this.cookieStorageService.setItem(this.#rememberMe, JSON.stringify(remember));\r\n return;\r\n }\r\n this.localStorageService.setItem(this.#rememberMe, JSON.stringify(remember));\r\n }\r\n\r\n remove() {\r\n if (this.appStartedWithSsr) {\r\n this.cookieStorageService.removeItem(this.#rememberMe);\r\n return;\r\n }\r\n this.localStorageService.removeItem(this.#rememberMe);\r\n }\r\n\r\n get() {\r\n if (this.appStartedWithSsr) {\r\n return Boolean(JSON.parse(this.cookieStorageService.getItem(this.#rememberMe) || 'false'));\r\n }\r\n return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe) || 'false'));\r\n }\r\n\r\n getFromToken(accessToken: string) {\r\n let tokenBody = accessToken.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\r\n while (tokenBody.length % 4 !== 0) {\r\n tokenBody += '=';\r\n }\r\n try {\r\n const parsedToken = JSON.parse(atob(tokenBody));\r\n return Boolean(parsedToken[this.#rememberMe]);\r\n } catch {\r\n return false;\r\n }\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(this.injector);\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 AbpWindowService,\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 { 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 windowService: AbpWindowService;\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 this.windowService = injector.get(AbpWindowService);\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, this.injector);\r\n if (shouldClear) clearOAuthStorage(this.injector);\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(this.injector));\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(this.injector);\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, injector: Injector): boolean {\r\n const storage = injector.get(OAuthStorage);\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 { DOCUMENT, Injector, PLATFORM_ID } from '@angular/core';\r\nimport { APP_STARTED_WITH_SSR, noop } from '@abp/ng.core';\r\nimport { Params } from '@angular/router';\r\nimport { filter, from, of, take, tap } from 'rxjs';\r\nimport { AuthFlowStrategy } from './auth-flow-strategy';\r\nimport { isTokenExpired } from '../utils';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport class AuthCodeFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = false;\r\n private platformId: object;\r\n protected appStartedWithSSR: boolean;\r\n protected document: Document;\r\n\r\n constructor(protected injector: Injector) {\r\n super(injector);\r\n this.platformId = injector.get(PLATFORM_ID);\r\n this.appStartedWithSSR = injector.get(APP_STARTED_WITH_SSR);\r\n this.document = injector.get(DOCUMENT);\r\n }\r\n\r\n async init() {\r\n this.checkRememberMeOption();\r\n this.listenToTokenReceived();\r\n if (!this.appStartedWithSSR && isPlatformBrowser(this.platformId)) {\r\n return super\r\n .init()\r\n .then(() => this.oAuthService.tryLogin().catch(noop))\r\n .then(() => {\r\n this.oAuthService.setupAutomaticSilentRefresh();\r\n });\r\n }\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 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 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 protected setUICulture() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n this.configState.uiCultureFromAuthCodeFlow = urlParams.get('ui-culture');\r\n }\r\n }\r\n\r\n protected replaceURLParams() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const location = this.windowService.window.location;\r\n const history = this.windowService.window.history;\r\n\r\n const query = location.search\r\n .replace(/([?&])iss=[^&]*&?/, '$1')\r\n .replace(/([?&])culture=[^&]*&?/, '$1')\r\n .replace(/([?&])ui-culture=[^&]*&?/, '$1')\r\n .replace(/[?&]+$/, '');\r\n\r\n const href = location.origin + location.pathname + query + location.hash;\r\n\r\n history.replaceState(null, '', href);\r\n }\r\n }\r\n\r\n protected listenToTokenReceived() {\r\n if (isPlatformBrowser(this.platformId) && !this.appStartedWithSSR) {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event.type === 'token_received'),\r\n tap(() => {\r\n //TODO: Investigate how to handle with ssr\r\n this.setUICulture();\r\n this.replaceURLParams();\r\n }),\r\n take(1),\r\n )\r\n .subscribe();\r\n }\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n if (this.appStartedWithSSR) {\r\n if (this.document.defaultView) {\r\n this.document.defaultView.location.replace('/authorize');\r\n }\r\n } else {\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 }\r\n\r\n checkIfInternalAuth(queryParams?: Params) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return false;\r\n }\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n this.rememberMeService.remove();\r\n\r\n if (this.appStartedWithSSR) {\r\n if (this.document.defaultView) {\r\n this.document.defaultView.location.replace('/logout');\r\n }\r\n } else {\r\n if (queryParams?.noRedirectToLogoutUrl) {\r\n this.router.navigate(['/']);\r\n return from(this.oAuthService.revokeTokenAndLogout(true));\r\n }\r\n return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));\r\n }\r\n }\r\n\r\n login(queryParams?: Params) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return of(null);\r\n }\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 =>\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 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(this.injector);\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, inject, PLATFORM_ID, DOCUMENT } 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, APP_STARTED_WITH_SSR, 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\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpOAuthService implements IAuthService {\r\n protected injector = inject(Injector);\r\n private appStartedWithSsr = this.injector.get(APP_STARTED_WITH_SSR);\r\n private platformId = this.injector.get(PLATFORM_ID);\r\n private document = this.injector.get(DOCUMENT);\r\n\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() {\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 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 | void> {\r\n if (isPlatformBrowser(this.platformId) && this.appStartedWithSsr) {\r\n this.document.defaultView?.location.replace('/authorize');\r\n return Promise.resolve();\r\n }\r\n try {\r\n return this.oAuthService.refreshToken();\r\n } catch (error) {\r\n console.log(\"Error while refreshing token: \", error);\r\n return Promise.reject();\r\n }\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 { Injectable } from '@angular/core';\r\nimport { OAuthStorage } from 'angular-oauth2-oidc';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BrowserTokenStorageService implements OAuthStorage {\r\n getItem(key: string): string {\r\n return this.readCookie(key);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.removeCookie(key);\r\n }\r\n\r\n setItem(key: string, data: string): void {\r\n this.writeCookie(key, data);\r\n }\r\n\r\n readCookie(name: string): string | null {\r\n if (typeof document === 'undefined') return null;\r\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\r\n return match ? decodeURIComponent(match[2]) : null;\r\n }\r\n\r\n writeCookie(name: string, value: string, days = 7): void {\r\n if (typeof document === 'undefined') return;\r\n const expires = new Date(Date.now() + days * 86400000).toUTCString();\r\n document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/; Secure; SameSite=Lax`;\r\n }\r\n\r\n removeCookie(name: string): void {\r\n if (typeof document === 'undefined') return;\r\n document.cookie = `${name}=; Max-Age=0; path=/;`;\r\n }\r\n}\r\n","import { DestroyRef, DOCUMENT, inject, Injectable } from '@angular/core';\r\nimport { OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { AbpLocalStorageService } from '@abp/ng.core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MemoryTokenStorageService implements OAuthStorage {\r\n private static workerUrl: string | null = null;\r\n\r\n private keysShouldStoreInMemory = [\r\n 'access_token',\r\n 'id_token',\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 'abpOAuthClientId',\r\n 'granted_scopes',\r\n ];\r\n\r\n private worker?: any;\r\n private port?: MessagePort;\r\n private cache = new Map<string, string>();\r\n private localStorageService = inject(AbpLocalStorageService);\r\n private _document = inject(DOCUMENT);\r\n private destroyRef = inject(DestroyRef);\r\n private useSharedWorker = false;\r\n\r\n constructor() {\r\n this.initializeStorage();\r\n this.setupCleanup();\r\n }\r\n\r\n private initializeStorage(): void {\r\n // @ts-ignore\r\n if (typeof SharedWorker !== 'undefined') {\r\n try {\r\n // Create worker from data URL to avoid path resolution issues in consuming apps\r\n // Data URLs are deterministic - same content produces same URL across all tabs\r\n if (!MemoryTokenStorageService.workerUrl) {\r\n MemoryTokenStorageService.workerUrl = this.createWorkerDataUrl();\r\n }\r\n // @ts-ignore\r\n this.worker = new SharedWorker(MemoryTokenStorageService.workerUrl, {\r\n name: 'oauth-token-storage',\r\n });\r\n this.port = this.worker.port;\r\n this.port.start();\r\n this.useSharedWorker = true;\r\n\r\n this.port.onmessage = event => {\r\n const { action, key, value } = event.data;\r\n\r\n switch (action) {\r\n case 'set':\r\n this.checkAuthStateChanges(key);\r\n this.cache.set(key, value);\r\n break;\r\n case 'remove':\r\n this.cache.delete(key);\r\n this.refreshDocument();\r\n break;\r\n case 'clear':\r\n this.cache.clear();\r\n this.refreshDocument();\r\n break;\r\n case 'get':\r\n if (value !== null) {\r\n this.cache.set(key, value);\r\n }\r\n break;\r\n }\r\n };\r\n\r\n // Load all tokens from SharedWorker on initialization\r\n this.keysShouldStoreInMemory.forEach(key => {\r\n this.port?.postMessage({ action: 'get', key });\r\n });\r\n } catch (error) {\r\n this.useSharedWorker = false;\r\n }\r\n } else {\r\n this.useSharedWorker = false;\r\n }\r\n }\r\n\r\n getItem(key: string): string | null {\r\n if (!this.keysShouldStoreInMemory.includes(key)) {\r\n return this.localStorageService.getItem(key);\r\n }\r\n return this.cache.get(key) || null;\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n if (!this.keysShouldStoreInMemory.includes(key)) {\r\n this.localStorageService.setItem(key, value);\r\n return;\r\n }\r\n\r\n if (this.useSharedWorker && this.port) {\r\n this.cache.set(key, value);\r\n this.port.postMessage({ action: 'set', key, value });\r\n } else {\r\n this.cache.set(key, value);\r\n }\r\n }\r\n\r\n removeItem(key: string): void {\r\n if (!this.keysShouldStoreInMemory.includes(key)) {\r\n this.localStorageService.removeItem(key);\r\n return;\r\n }\r\n\r\n if (this.useSharedWorker && this.port) {\r\n this.cache.delete(key);\r\n this.port.postMessage({ action: 'remove', key });\r\n } else {\r\n this.cache.delete(key);\r\n }\r\n }\r\n\r\n clear(): void {\r\n if (this.useSharedWorker && this.port) {\r\n this.port.postMessage({ action: 'clear' });\r\n }\r\n this.cache.clear();\r\n }\r\n\r\n private cleanupPort(): void {\r\n if (this.useSharedWorker && this.port) {\r\n try {\r\n this.port.postMessage({ action: 'disconnect' });\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n }\r\n\r\n private setupCleanup(): void {\r\n if (this._document.defaultView) {\r\n fromEvent(this._document.defaultView, 'beforeunload')\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.cleanupPort());\r\n\r\n fromEvent(this._document.defaultView, 'pagehide')\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.cleanupPort());\r\n }\r\n }\r\n\r\n private checkAuthStateChanges = (key: string) => {\r\n if (key === 'access_token' && !this.cache.get('access_token')) {\r\n this.refreshDocument();\r\n }\r\n };\r\n\r\n private refreshDocument(): void {\r\n this.cleanupPort();\r\n setTimeout(() => {\r\n this._document.defaultView?.location.reload();\r\n }, 100);\r\n }\r\n\r\n private createWorkerDataUrl(): string {\r\n const workerScript = `const tokenStore = new Map();\r\nconst ports = new Set();\r\n\r\nfunction broadcastToOtherPorts(senderPort, message) {\r\n const deadPorts = [];\r\n ports.forEach(p => {\r\n if (p !== senderPort) {\r\n try {\r\n p.postMessage(message);\r\n } catch (error) {\r\n deadPorts.push(p);\r\n }\r\n }\r\n });\r\n deadPorts.forEach(p => ports.delete(p));\r\n}\r\n\r\nfunction removePort(port) {\r\n if (ports.has(port)) {\r\n ports.delete(port);\r\n }\r\n}\r\n\r\nself.onconnect = (event) => {\r\n const port = event.ports[0];\r\n ports.add(port);\r\n\r\n port.addEventListener('messageerror', () => {\r\n removePort(port);\r\n });\r\n\r\n port.onmessage = (e) => {\r\n const { action, key, value } = e.data;\r\n\r\n switch (action) {\r\n case 'set':\r\n if (key && value !== undefined) {\r\n tokenStore.set(key, value);\r\n broadcastToOtherPorts(port, { action: 'set', key, value });\r\n }\r\n break;\r\n\r\n case 'remove':\r\n if (key) {\r\n tokenStore.delete(key);\r\n broadcastToOtherPorts(port, { action: 'remove', key });\r\n }\r\n break;\r\n\r\n case 'clear':\r\n tokenStore.clear();\r\n broadcastToOtherPorts(port, { action: 'clear' });\r\n break;\r\n\r\n case 'get':\r\n if (key) {\r\n const value = tokenStore.get(key) ?? null;\r\n port.postMessage({ action: 'get', key, value });\r\n }\r\n break;\r\n\r\n case 'disconnect':\r\n removePort(port);\r\n break;\r\n\r\n default:\r\n //\r\n }\r\n };\r\n\r\n port.start();\r\n};`;\r\n return 'data:application/javascript;base64,' + btoa(workerScript);\r\n }\r\n}\r\n","import {\r\n AuthService,\r\n AuthGuard,\r\n authGuard,\r\n asyncAuthGuard,\r\n ApiInterceptor,\r\n PIPE_TO_LOGIN_FN_KEY,\r\n CHECK_AUTHENTICATION_STATE_FN_KEY,\r\n AuthErrorFilterService,\r\n} from '@abp/ng.core';\r\nimport { Provider, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { AbpOAuthGuard, abpOAuthGuard, asyncAbpOAuthGuard, } from '../guards';\r\nimport { OAuthConfigurationHandler } from '../handlers';\r\nimport { OAuthApiInterceptor } from '../interceptors';\r\nimport { AbpOAuthService, BrowserTokenStorageService, OAuthErrorFilterService } from '../services';\r\nimport { pipeToLogin, checkAccessToken, oAuthStorageFactory } from '../utils';\r\nimport { NavigateToManageProfileProvider } from './navigate-to-manage-profile.provider';\r\nimport { ServerTokenStorageService } from '../services/server-token-storage.service';\r\n\r\nexport function provideAbpOAuth() {\r\n const 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: asyncAuthGuard,\r\n useValue: asyncAbpOAuthGuard,\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 provideAppInitializer(() => {\r\n inject(OAuthConfigurationHandler);\r\n }),\r\n OAuthModule.forRoot().providers as Provider[],\r\n ServerTokenStorageService,\r\n BrowserTokenStorageService,\r\n {\r\n provide: OAuthStorage,\r\n useFactory: oAuthStorageFactory,\r\n },\r\n { provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService },\r\n ];\r\n\r\n return makeEnvironmentProviders(providers);\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { provideAbpOAuth } from './providers';\r\n\r\n/**\r\n * @deprecated AbpOAuthModule is deprecated use `provideAbpOAuth` *function* instead.\r\n */\r\n@NgModule()\r\nexport class AbpOAuthModule {\r\n static forRoot(): ModuleWithProviders<AbpOAuthModule> {\r\n return {\r\n ngModule: AbpOAuthModule,\r\n providers: [provideAbpOAuth()],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","filter","OAuthService2","take","tap"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abp/ng.oauth",
|
|
3
|
-
"version": "10.0.1",
|
|
3
|
+
"version": "10.1.0-rc.1",
|
|
4
4
|
"homepage": "https://abp.io",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/abpframework/abp.git"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@abp/ng.core": "~10.0.1",
|
|
11
|
-
"@abp/utils": "~10.0.1",
|
|
10
|
+
"@abp/ng.core": "~10.1.0-rc.1",
|
|
11
|
+
"@abp/utils": "~10.1.0-rc.1",
|
|
12
12
|
"angular-oauth2-oidc": "^20.0.0",
|
|
13
13
|
"just-clone": "^6.0.0",
|
|
14
14
|
"just-compare": "^2.0.0",
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"webapp"
|
|
33
33
|
],
|
|
34
34
|
"module": "fesm2022/abp-ng.oauth.mjs",
|
|
35
|
-
"typings": "
|
|
35
|
+
"typings": "types/abp-ng.oauth.d.ts",
|
|
36
36
|
"exports": {
|
|
37
37
|
"./package.json": {
|
|
38
38
|
"default": "./package.json"
|
|
39
39
|
},
|
|
40
40
|
".": {
|
|
41
|
-
"types": "./
|
|
41
|
+
"types": "./types/abp-ng.oauth.d.ts",
|
|
42
42
|
"default": "./fesm2022/abp-ng.oauth.mjs"
|
|
43
43
|
}
|
|
44
44
|
},
|
|
@@ -110,6 +110,31 @@ declare class ServerTokenStorageService implements OAuthStorage {
|
|
|
110
110
|
static ɵprov: i0.ɵɵInjectableDeclaration<ServerTokenStorageService>;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
declare class MemoryTokenStorageService implements OAuthStorage {
|
|
114
|
+
private static workerUrl;
|
|
115
|
+
private keysShouldStoreInMemory;
|
|
116
|
+
private worker?;
|
|
117
|
+
private port?;
|
|
118
|
+
private cache;
|
|
119
|
+
private localStorageService;
|
|
120
|
+
private _document;
|
|
121
|
+
private destroyRef;
|
|
122
|
+
private useSharedWorker;
|
|
123
|
+
constructor();
|
|
124
|
+
private initializeStorage;
|
|
125
|
+
getItem(key: string): string | null;
|
|
126
|
+
setItem(key: string, value: string): void;
|
|
127
|
+
removeItem(key: string): void;
|
|
128
|
+
clear(): void;
|
|
129
|
+
private cleanupPort;
|
|
130
|
+
private setupCleanup;
|
|
131
|
+
private checkAuthStateChanges;
|
|
132
|
+
private refreshDocument;
|
|
133
|
+
private createWorkerDataUrl;
|
|
134
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MemoryTokenStorageService, never>;
|
|
135
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MemoryTokenStorageService>;
|
|
136
|
+
}
|
|
137
|
+
|
|
113
138
|
declare abstract class AuthFlowStrategy {
|
|
114
139
|
protected injector: Injector;
|
|
115
140
|
abstract readonly isInternalAuth: boolean;
|
|
@@ -382,4 +407,4 @@ declare const NavigateToManageProfileProvider: Provider;
|
|
|
382
407
|
|
|
383
408
|
declare function provideAbpOAuth(): i0.EnvironmentProviders;
|
|
384
409
|
|
|
385
|
-
export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, BrowserTokenStorageService, COOKIES, MockStorage, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, OAuthErrorFilterService, RememberMeService, ServerTokenStorageService, abpOAuthGuard, asyncAbpOAuthGuard, buildLoginUrl, checkAccessToken, clearOAuthStorage, isTokenExpired, oAuthStorageFactory, pipeToLogin, provideAbpOAuth };
|
|
410
|
+
export { AUTH_FLOW_STRATEGY, AbpOAuthGuard, AbpOAuthModule, AbpOAuthService, AuthCodeFlowStrategy, AuthFlowStrategy, AuthPasswordFlowStrategy, BrowserTokenStorageService, COOKIES, MemoryTokenStorageService, MockStorage, NavigateToManageProfileProvider, OAuthApiInterceptor, OAuthConfigurationHandler, OAuthErrorFilterService, RememberMeService, ServerTokenStorageService, abpOAuthGuard, asyncAbpOAuthGuard, buildLoginUrl, checkAccessToken, clearOAuthStorage, isTokenExpired, oAuthStorageFactory, pipeToLogin, provideAbpOAuth };
|