From 95a4ccc9c7eb46d6a73f5f7795566ee2dfb3863d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sinan=20=C3=96zt=C3=BCrk?= Date: Wed, 17 Jan 2024 17:13:28 +0300 Subject: [PATCH] fix reviews --- .../src/lib/services/remember-me.service.ts | 19 +++++++++++-------- .../lib/strategies/auth-code-flow-strategy.ts | 6 ++---- .../src/lib/strategies/auth-flow-strategy.ts | 4 ++-- .../strategies/auth-password-flow-strategy.ts | 8 ++++---- .../oauth/src/lib/utils/auth-utils.ts | 4 +--- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts b/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts index cc1c78af8a..7c099c5166 100644 --- a/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts +++ b/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts @@ -1,24 +1,27 @@ import { AbpLocalStorageService } from "@abp/ng.core"; -import { Injectable, Injector } from "@angular/core"; - -const rememberMe = 'remember_me'; +import { Injectable, inject } from "@angular/core"; @Injectable({ providedIn: 'root' }) export class RememberMeService { - constructor(private injector: Injector) { } - localStorageService = this.injector.get(AbpLocalStorageService); + readonly #rememberMe = 'remember_me' + protected readonly localStorageService = inject(AbpLocalStorageService); set(remember: boolean) { - this.localStorageService.setItem(rememberMe, JSON.stringify(remember)); + this.localStorageService.setItem(this.#rememberMe, JSON.stringify(remember)); } remove() { - this.localStorageService.removeItem(rememberMe); + this.localStorageService.removeItem(this.#rememberMe); } get() { - return Boolean(JSON.parse(this.localStorageService.getItem(rememberMe))); + return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe))); + } + + getFromToken(accessToken: string) { + let parsedToken = JSON.parse(atob(accessToken.split(".")[1])); + return Boolean(parsedToken[this.#rememberMe]); } } \ No newline at end of file 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 a616d60770..5a1b2c3d05 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 @@ -6,7 +6,6 @@ import { isTokenExpired } from '../utils'; export class AuthCodeFlowStrategy extends AuthFlowStrategy { readonly isInternalAuth = false; - readonly #rememberMe = 'remember_me' async init() { this.checkRememberMeOption(); @@ -19,12 +18,11 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy { private checkRememberMeOption() { const accessToken = this.oAuthService.getAccessToken(); - const isTokenExpire = isTokenExpired(this.oAuthService); + const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration()); let rememberMe = this.rememberMeService.get(); if (accessToken && !rememberMe) { - let parsedToken = JSON.parse(atob(accessToken.split(".")[1])); - const rememberMeValue = Boolean(parsedToken[this.#rememberMe]); + const rememberMeValue = this.rememberMeService.getFromToken(accessToken); if (rememberMeValue) { this.rememberMeService.set(true); diff --git a/npm/ng-packs/packages/oauth/src/lib/strategies/auth-flow-strategy.ts b/npm/ng-packs/packages/oauth/src/lib/strategies/auth-flow-strategy.ts index 80b63ec77c..8a75a23b8b 100644 --- a/npm/ng-packs/packages/oauth/src/lib/strategies/auth-flow-strategy.ts +++ b/npm/ng-packs/packages/oauth/src/lib/strategies/auth-flow-strategy.ts @@ -82,11 +82,11 @@ export abstract class AuthFlowStrategy { return this.oAuthService .loadDiscoveryDocument() .then(() => { - const isTokenExpire = isTokenExpired(this.oAuthService); + const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration()); if (!isTokenExpire || this.oAuthService.getRefreshToken()) { return this.refreshToken(); } - + return Promise.resolve(); }) .catch(this.catchError); diff --git a/npm/ng-packs/packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts b/npm/ng-packs/packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts index 65198536a8..eddf38a03e 100644 --- a/npm/ng-packs/packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts +++ b/npm/ng-packs/packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts @@ -5,7 +5,7 @@ import { from, Observable } from 'rxjs'; import { HttpHeaders } from '@angular/common/http'; import { AuthFlowStrategy } from './auth-flow-strategy'; import { isTokenExpired, pipeToLogin } from '../utils/auth-utils'; -import { AbpLocalStorageService, LoginParams } from '@abp/ng.core'; +import { LoginParams } from '@abp/ng.core'; import { clearOAuthStorage } from '../utils/clear-o-auth-storage'; export class AuthPasswordFlowStrategy extends AuthFlowStrategy { @@ -32,14 +32,14 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy { } async init() { - this.checkRememberMeOption(this.localStorageService); + this.checkRememberMeOption(); return super.init().then(() => this.listenToTokenExpiration()); } - private checkRememberMeOption(localStorageService: AbpLocalStorageService) { + private checkRememberMeOption() { const accessToken = this.oAuthService.getAccessToken(); - const isTokenExpire = isTokenExpired(this.oAuthService); + const isTokenExpire = isTokenExpired(this.oAuthService.getAccessTokenExpiration()); const rememberMe = this.rememberMeService.get(); if (accessToken && isTokenExpire && !rememberMe) { this.rememberMeService.remove(); diff --git a/npm/ng-packs/packages/oauth/src/lib/utils/auth-utils.ts b/npm/ng-packs/packages/oauth/src/lib/utils/auth-utils.ts index 64f867df7e..8742136b1f 100644 --- a/npm/ng-packs/packages/oauth/src/lib/utils/auth-utils.ts +++ b/npm/ng-packs/packages/oauth/src/lib/utils/auth-utils.ts @@ -7,7 +7,6 @@ import { LoginParams, PipeToLoginFn, } from '@abp/ng.core'; -import { OAuthService } from 'angular-oauth2-oidc'; import { RememberMeService } from '../services/remember-me.service'; export const pipeToLogin: PipeToLoginFn = function ( @@ -26,8 +25,7 @@ export const pipeToLogin: PipeToLoginFn = function ( ); }; -export function isTokenExpired(oAuthService: OAuthService): boolean { - const expireDate = oAuthService.getAccessTokenExpiration(); +export function isTokenExpired(expireDate: number): boolean { const currentDate = new Date().getTime(); return expireDate < currentDate; }