From 7ffe590ec9590a31492869fc0ce95c374f3451ff Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 18 Jun 2021 15:44:30 +0300 Subject: [PATCH 1/3] add new props to CurrentUserDto --- .../asp-net-core/mvc/application-configurations/models.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.ts b/npm/ng-packs/packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.ts index b67b9966fa..f760cd1946 100644 --- a/npm/ng-packs/packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.ts +++ b/npm/ng-packs/packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.ts @@ -1,7 +1,7 @@ -import type { CurrentTenantDto, MultiTenancyInfoDto } from '../multi-tenancy/models'; -import type { ObjectExtensionsDto } from './object-extending/models'; import type { LanguageInfo } from '../../../localization/models'; import type { NameValue } from '../../../models'; +import type { CurrentTenantDto, MultiTenancyInfoDto } from '../multi-tenancy/models'; +import type { ObjectExtensionsDto } from './object-extending/models'; export interface ApplicationAuthConfigurationDto { policies: Record; @@ -66,6 +66,8 @@ export interface CurrentUserDto { phoneNumber?: string; phoneNumberVerified: boolean; roles: string[]; + impersonatorUserId?: string; + impersonatorTenantId?: string; } export interface DateTimeFormatDto { From 3a5750cc60808dba07e14aa68e07bd17c5eb6bb2 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 18 Jun 2021 15:44:48 +0300 Subject: [PATCH 2/3] add pipeToTokenResponse utility function to auth-utils.ts --- .../packages/core/src/lib/utils/auth-utils.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts index 59c1c9438b..5eb74f2eb9 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts @@ -1,5 +1,6 @@ import { Injector } from '@angular/core'; import { Router } from '@angular/router'; +import { OAuthStorage, TokenResponse } from 'angular-oauth2-oidc'; import { pipe } from 'rxjs'; import { switchMap, tap } from 'rxjs/operators'; import { LoginParams } from '../models/auth'; @@ -27,6 +28,31 @@ export function pipeToLogin( ); } +export function pipeToTokenResponse(injector: Injector) { + const storage = injector.get(OAuthStorage); + + return pipe( + tap((res: TokenResponse) => { + const { access_token, refresh_token, scope: grantedScopes, expires_in } = res; + + storage.setItem('access_token', access_token); + storage.setItem('refresh_token', refresh_token); + storage.setItem('access_token_stored_at', '' + Date.now()); + + if (grantedScopes) { + storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' '))); + } + + if (expires_in) { + const expiresInMilliSeconds = expires_in * 1000; + const now = new Date(); + const expiresAt = now.getTime() + expiresInMilliSeconds; + storage.setItem('expires_at', '' + expiresAt); + } + }), + ); +} + export function setRememberMe(remember: boolean) { removeRememberMe(); localStorage.setItem(storageKey, 'true'); From 675ed2827b5a3262dd7a404a91d10ff6cc26f7ab Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 18 Jun 2021 16:20:18 +0300 Subject: [PATCH 3/3] refactor the pipeToTokenResponse fn --- .../packages/core/src/lib/utils/auth-utils.ts | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts index 5eb74f2eb9..44da3f7c4a 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/auth-utils.ts @@ -28,29 +28,24 @@ export function pipeToLogin( ); } -export function pipeToTokenResponse(injector: Injector) { +export function setTokenResponseToStorage(injector: Injector, tokenRes: TokenResponse) { + const { access_token, refresh_token, scope: grantedScopes, expires_in } = tokenRes; const storage = injector.get(OAuthStorage); - return pipe( - tap((res: TokenResponse) => { - const { access_token, refresh_token, scope: grantedScopes, expires_in } = res; - - storage.setItem('access_token', access_token); - storage.setItem('refresh_token', refresh_token); - storage.setItem('access_token_stored_at', '' + Date.now()); + storage.setItem('access_token', access_token); + storage.setItem('refresh_token', refresh_token); + storage.setItem('access_token_stored_at', '' + Date.now()); - if (grantedScopes) { - storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' '))); - } + if (grantedScopes) { + storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' '))); + } - if (expires_in) { - const expiresInMilliSeconds = expires_in * 1000; - const now = new Date(); - const expiresAt = now.getTime() + expiresInMilliSeconds; - storage.setItem('expires_at', '' + expiresAt); - } - }), - ); + if (expires_in) { + const expiresInMilliSeconds = expires_in * 1000; + const now = new Date(); + const expiresAt = now.getTime() + expiresInMilliSeconds; + storage.setItem('expires_at', '' + expiresAt); + } } export function setRememberMe(remember: boolean) {