diff --git a/npm/ng-packs/packages/core/src/lib/models/environment.ts b/npm/ng-packs/packages/core/src/lib/models/environment.ts index 062b1df82b..252afe1291 100644 --- a/npm/ng-packs/packages/core/src/lib/models/environment.ts +++ b/npm/ng-packs/packages/core/src/lib/models/environment.ts @@ -7,10 +7,10 @@ export interface Environment { hmr?: boolean; test?: boolean; localization?: { defaultResourceName?: string }; - oAuthConfig: AuthConfig; + oAuthConfig?: AuthConfig; production: boolean; remoteEnv?: RemoteEnv; - [key:string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any + [key: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any } export interface ApplicationInfo { name: string; diff --git a/npm/ng-packs/packages/core/src/lib/tokens/manage-profile.token.ts b/npm/ng-packs/packages/core/src/lib/tokens/manage-profile.token.ts index 3bc1c41c14..2083e63c71 100644 --- a/npm/ng-packs/packages/core/src/lib/tokens/manage-profile.token.ts +++ b/npm/ng-packs/packages/core/src/lib/tokens/manage-profile.token.ts @@ -1,21 +1,5 @@ -import { InjectionToken, inject } from '@angular/core'; -import { EnvironmentService } from '../services/environment.service'; +import { InjectionToken } from '@angular/core'; export const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken<() => void>( 'NAVIGATE_TO_MANAGE_PROFILE', - { - providedIn: 'root', - factory: () => { - const environment = inject(EnvironmentService); - - return () => { - window.open( - `${environment.getEnvironment().oAuthConfig.issuer}/Account/Manage?returnUrl=${ - window.location.href - }`, - '_self', - ); - }; - }, - }, ); diff --git a/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts b/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts index ea2874c2f9..0bc0c887ca 100644 --- a/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts +++ b/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts @@ -9,6 +9,7 @@ import { initFactory } from './utils/init-factory'; import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { ApiInterceptor } from './interceptors/api.interceptor'; import { AbpOAuthGuard } from './guards/oauth.guard'; +import { NavigateToManageProfileProvider } from './providers'; @NgModule({ imports: [CommonModule, OAuthModule], @@ -31,6 +32,7 @@ export class AbpOAuthModule { useExisting: ApiInterceptor, multi: true, }, + NavigateToManageProfileProvider, { provide: APP_INITIALIZER, multi: true, diff --git a/npm/ng-packs/packages/oauth/src/lib/providers/index.ts b/npm/ng-packs/packages/oauth/src/lib/providers/index.ts new file mode 100644 index 0000000000..d938907916 --- /dev/null +++ b/npm/ng-packs/packages/oauth/src/lib/providers/index.ts @@ -0,0 +1 @@ +export * from './navigate-to-manage-profile.provider'; diff --git a/npm/ng-packs/packages/oauth/src/lib/providers/navigate-to-manage-profile.provider.ts b/npm/ng-packs/packages/oauth/src/lib/providers/navigate-to-manage-profile.provider.ts new file mode 100644 index 0000000000..e20bf62fc2 --- /dev/null +++ b/npm/ng-packs/packages/oauth/src/lib/providers/navigate-to-manage-profile.provider.ts @@ -0,0 +1,21 @@ +import { inject, Provider } from '@angular/core'; +import { EnvironmentService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core'; + +export const NavigateToManageProfileProvider: Provider = { + provide: NAVIGATE_TO_MANAGE_PROFILE, + useFactory: () => { + const environment = inject(EnvironmentService); + + return () => { + const env = environment.getEnvironment(); + if (!env.oAuthConfig) { + console.warn('The oAuthConfig env is missing on environment.ts'); + return; + } + window.open( + `${env.oAuthConfig.issuer}/Account/Manage?returnUrl=${window.location.href}`, + '_self', + ); + }; + }, +}; diff --git a/npm/ng-packs/packages/oauth/src/public-api.ts b/npm/ng-packs/packages/oauth/src/public-api.ts index d6154d0883..72cc5e0269 100644 --- a/npm/ng-packs/packages/oauth/src/public-api.ts +++ b/npm/ng-packs/packages/oauth/src/public-api.ts @@ -6,3 +6,4 @@ export * from './lib/strategies'; export * from './lib/handlers'; export * from './lib/interceptors'; export * from './lib/guards'; +export * from './lib/providers';