1- import { APP_INITIALIZER , NgModule } from '@angular/core' ;
2- import { BrowserModule } from '@angular/platform-browser' ;
1+ import { APP_INITIALIZER , NgModule } from '@angular/core' ;
2+ import { BrowserModule } from '@angular/platform-browser' ;
33
4- import { AppRoutingModule } from './app-routing.module' ;
5- import { AppComponent } from './app.component' ;
6- import { BrowserAnimationsModule } from '@angular/platform-browser/animations' ;
4+ import { AppRoutingModule } from './app-routing.module' ;
5+ import { AppComponent } from './app.component' ;
6+ import { BrowserAnimationsModule } from '@angular/platform-browser/animations' ;
77
8- import { LayoutModule } from '@angular/cdk/layout' ;
9- import { MatToolbarModule } from '@angular/material/toolbar' ;
10- import { MatButtonModule } from '@angular/material/button' ;
11- import { MatSidenavModule } from '@angular/material/sidenav' ;
12- import { MatIconModule } from '@angular/material/icon' ;
13- import { MatListModule } from '@angular/material/list' ;
14- import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field' ;
15- import { AppConfigService } from "./app-config.service" ;
16- import { MatSnackBarModule } from "@angular/material/snack-bar" ;
17- import { CONNECTOR_CATALOG_API , CONNECTOR_MANAGEMENT_API , DATA_ADDRESS_TYPES } from "./shared/utils/app.constants" ;
18- import { HTTP_INTERCEPTORS , HttpClientModule } from "@angular/common/http" ;
19- import { EdcApiKeyInterceptor } from "./shared/interceptors/apikey.interceptor" ;
20- import { environment } from "../environments/environment" ;
8+ import { LayoutModule } from '@angular/cdk/layout' ;
9+ import { MatToolbarModule } from '@angular/material/toolbar' ;
10+ import { MatButtonModule } from '@angular/material/button' ;
11+ import { MatSidenavModule } from '@angular/material/sidenav' ;
12+ import { MatIconModule } from '@angular/material/icon' ;
13+ import { MatListModule } from '@angular/material/list' ;
14+ import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field' ;
15+ import { MatSnackBarModule } from "@angular/material/snack-bar" ;
16+ import { CONNECTOR_CATALOG_API , CONNECTOR_MANAGEMENT_API , DATA_ADDRESS_TYPES } from "./shared/utils/app.constants" ;
17+ import { HTTP_INTERCEPTORS , HttpClientModule } from "@angular/common/http" ;
18+ import { Oauth2Interceptor } from "./shared/interceptors/aouth2.interceptor" ;
19+ import { environment } from "../environments/environment" ;
2120import { EdcConnectorClient } from "@think-it-labs/edc-connector-client" ;
22- import { MatCardModule } from '@angular/material/card' ;
23- import { SharedModule } from './shared/shared.module' ;
21+ import { MatCardModule } from '@angular/material/card' ;
22+ import { SharedModule } from './shared/shared.module' ;
23+
24+ import { AuthService } from './auth/auth.service' ;
25+ import { JwtModule , JWT_OPTIONS } from '@auth0/angular-jwt' ;
26+ import { OAuthModule , OAuthModuleConfig } from 'angular-oauth2-oidc' ;
27+
28+ /**
29+ * Declare the JWT Module configuration. It will be used to work with tokens, like decode the access token
30+ *
31+ * @returns JWT Module config
32+ */
33+ export function jwtOptionsFactory ( ) {
34+ return {
35+ tokenGetter : ( ) => {
36+ return sessionStorage . getItem ( environment . jwt . storageKey ) ;
37+ } ,
38+ allowedDomains : environment . runtime . oauth2 . allowedUrls . split ( ',' )
39+ }
40+ }
2441
2542@NgModule ( {
2643 imports : [
@@ -36,54 +53,51 @@ import {SharedModule} from './shared/shared.module';
3653 MatSnackBarModule ,
3754 MatCardModule ,
3855 SharedModule ,
39- HttpClientModule
56+ HttpClientModule ,
57+ JwtModule . forRoot ( {
58+ jwtOptionsProvider : {
59+ provide : JWT_OPTIONS ,
60+ useFactory : jwtOptionsFactory
61+ }
62+ } ) ,
63+ OAuthModule . forRoot ( {
64+ resourceServer : {
65+ allowedUrls : environment . runtime . oauth2 . allowedUrls . split ( ',' ) ,
66+ // Add Auth header with Bearer token to all requests
67+ sendAccessToken : true
68+ }
69+ } )
4070 ] ,
4171 declarations : [
4272 AppComponent
4373 ] ,
4474 providers : [
45- {
46- provide : APP_INITIALIZER ,
47- useFactory : ( configService : AppConfigService ) => ( ) => configService . loadConfig ( ) ,
48- deps : [ AppConfigService ] ,
49- multi : true
50- } ,
75+ AuthService ,
5176 { provide : MAT_FORM_FIELD_DEFAULT_OPTIONS , useValue : { appearance : 'outline' } } ,
5277 {
5378 provide : CONNECTOR_MANAGEMENT_API ,
54- useFactory : ( s : AppConfigService ) => s . getConfig ( ) ?. managementApiUrl ,
55- deps : [ AppConfigService ]
79+ useFactory : ( ) => environment . runtime . managementApiUrl
5680 } ,
5781 {
5882 provide : CONNECTOR_CATALOG_API ,
59- useFactory : ( s : AppConfigService ) => s . getConfig ( ) ?. catalogUrl ,
60- deps : [ AppConfigService ]
83+ useFactory : ( ) => environment . runtime . catalogUrl
6184 } ,
6285 {
6386 provide : 'HOME_CONNECTOR_STORAGE_ACCOUNT' ,
64- useFactory : ( s : AppConfigService ) => s . getConfig ( ) ?. storageAccount ,
65- deps : [ AppConfigService ]
87+ useFactory : ( ) => environment . runtime . storageAccount
6688 } ,
6789 {
6890 provide : 'STORAGE_TYPES' ,
6991 useFactory : ( ) => [ { id : DATA_ADDRESS_TYPES . httpData , name : DATA_ADDRESS_TYPES . httpData } , { id : DATA_ADDRESS_TYPES . amazonS3 , name : DATA_ADDRESS_TYPES . amazonS3 } ] ,
7092 } ,
71- {
72- provide : HTTP_INTERCEPTORS , multi : true , useFactory : ( ) => {
73- let i = new EdcApiKeyInterceptor ( ) ;
74- i . apiKey = environment . apiKey
75- return i ;
76- } , deps : [ AppConfigService ]
77- } ,
93+ { provide : HTTP_INTERCEPTORS , useClass : Oauth2Interceptor , multi : true } ,
7894 {
7995 provide : EdcConnectorClient ,
80- useFactory : ( s : AppConfigService ) => {
96+ useFactory : ( ) => {
8197 return new EdcConnectorClient . Builder ( )
82- . apiToken ( environment . apiKey )
83- . managementUrl ( s . getConfig ( ) ?. managementApiUrl as string )
98+ . managementUrl ( environment . runtime . managementApiUrl )
8499 . build ( ) ;
85- } ,
86- deps : [ AppConfigService ]
100+ }
87101 }
88102 ] ,
89103 bootstrap : [ AppComponent ]
0 commit comments