diff --git a/npm/ng-packs/packages/oauth/src/lib/services/index.ts b/npm/ng-packs/packages/oauth/src/lib/services/index.ts index 32909341a1..9e8637a59a 100644 --- a/npm/ng-packs/packages/oauth/src/lib/services/index.ts +++ b/npm/ng-packs/packages/oauth/src/lib/services/index.ts @@ -3,3 +3,4 @@ export * from './oauth-error-filter.service'; export * from './remember-me.service'; export * from './browser-token-storage.service'; export * from './server-token-storage.service'; +export * from './memory-token-storage.service'; diff --git a/npm/ng-packs/packages/oauth/src/lib/services/memory-token-storage.service.ts b/npm/ng-packs/packages/oauth/src/lib/services/memory-token-storage.service.ts new file mode 100644 index 0000000000..c70e3106a8 --- /dev/null +++ b/npm/ng-packs/packages/oauth/src/lib/services/memory-token-storage.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { OAuthStorage } from 'angular-oauth2-oidc'; + +@Injectable({ + providedIn: 'root', +}) +export class MemoryTokenStorageService implements OAuthStorage { + private keysShouldStoreLocalstorage = ['PKCE_verifier', 'abpOAuthClientId', 'abp_session', 'refresh_token', 'granted_scopes', 'id_token_claims_obj']; + private data = new Map(); + + getItem(key: string): string { + console.log('getItem -->>', key); + if (key !== 'access_token') { + return localStorage.getItem(key); + } + return this.data.get(key) || null; + } + + removeItem(key: string): void { + if (key !== 'access_token') { + localStorage.removeItem(key); + return; + } + this.data.delete(key); + } + + setItem(key: string, data: string): void { + if (key !== 'access_token') { + console.log('setItem -->', key, data); + localStorage.setItem(key, data); + return; + } + console.log('setItem -->', key, data); + this.data.set(key, data); + } + + clear() { + this.data.clear(); + } +} diff --git a/npm/ng-packs/packages/oauth/src/lib/utils/storage.factory.ts b/npm/ng-packs/packages/oauth/src/lib/utils/storage.factory.ts index 97cd86682b..c398de0bd4 100644 --- a/npm/ng-packs/packages/oauth/src/lib/utils/storage.factory.ts +++ b/npm/ng-packs/packages/oauth/src/lib/utils/storage.factory.ts @@ -1,7 +1,7 @@ import { inject, PLATFORM_ID } from '@angular/core'; import { isPlatformBrowser } from '@angular/common'; import { ServerTokenStorageService } from '../services/server-token-storage.service'; -import { BrowserTokenStorageService } from '../services'; +import { BrowserTokenStorageService, MemoryTokenStorageService } from '../services'; import { OAuthStorage } from 'angular-oauth2-oidc'; import { AbpLocalStorageService, APP_STARTED_WITH_SSR } from '@abp/ng.core'; @@ -35,5 +35,5 @@ export function oAuthStorageFactory(): OAuthStorage { ? inject(BrowserTokenStorageService) : inject(ServerTokenStorageService); } - return inject(AbpLocalStorageService); + return inject(MemoryTokenStorageService); }