diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts new file mode 100644 index 0000000000..2ac7d6369a --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/interceptors/transfer-state.interceptor.ts @@ -0,0 +1,44 @@ +import { inject, Injectable, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core'; +import { + HttpEvent, + HttpHandler, + HttpInterceptor, + HttpRequest, + HttpResponse, +} from '@angular/common/http'; +import { Observable, of } from 'rxjs'; +import { isPlatformBrowser, isPlatformServer } from '@angular/common'; +import { tap } from 'rxjs/operators'; + +@Injectable() +export class TransferStateInterceptor implements HttpInterceptor { + private transferState = inject(TransferState); + private platformId = inject(PLATFORM_ID); + + constructor() {} + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + if (req.method !== 'GET') { + return next.handle(req); + } + + const stateKey = makeStateKey>(req.urlWithParams); + + if (isPlatformBrowser(this.platformId)) { + const storedResponse = this.transferState.get>(stateKey, null); + if (storedResponse) { + this.transferState.remove(stateKey); + return of(new HttpResponse({ body: storedResponse, status: 200 })); + } + } + + return next.handle(req).pipe( + tap(event => { + if (isPlatformServer(this.platformId) && event instanceof HttpResponse) { + this.transferState.set(stateKey, event.body); + console.log(`Interceptor: ${req.urlWithParams} verisi TransferState'e kaydedildi.`); + } + }), + ); + } +} diff --git a/npm/ng-packs/packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts b/npm/ng-packs/packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts index 289a26099a..d5eb14ee24 100644 --- a/npm/ng-packs/packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts +++ b/npm/ng-packs/packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts @@ -22,14 +22,22 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy { return super .init() .then(() => this.oAuthService.tryLogin().catch(noop)) - .then(() => this.oAuthService.setupAutomaticSilentRefresh()); + .then(() => { + //TODO:Investigate silent refresh issue in SSR + if (isPlatformBrowser(this.platformId)) { + this.oAuthService.setupAutomaticSilentRefresh(); + } + }); } private checkRememberMeOption() { + console.log('checkRememberMeOption called ---->>>>>'); const accessToken = this.oAuthService.getAccessToken(); + console.log('accessToken New ----->>>>', accessToken); const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration()); + console.log('isTokenExpire New ----->>>>', isTokenExpire); let rememberMe = this.rememberMeService.get(); - + console.log('rememberMe New ----->>>>', rememberMe); if (accessToken && !rememberMe) { const rememberMeValue = this.rememberMeService.getFromToken(accessToken);