{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/modules_msal/CubeAuth.js","./src/app/modules_msal/adB2c.js","./src/app/modules_msal/azuread.js","./src/app/abstractions/dias-base-effects.service.ts","./src/app/abstractions/dias-http.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.config.ts","./src/app/app.interceptors.ts","./src/app/app.routes.ts","./src/app/configs/global.config.ts","./src/app/configs/translate.config.ts","./src/app/directives/layout-mode-handler.directive.ts","./src/app/directives/notification-handler.directive.ts","./src/app/directives/translate.directive.ts","./src/app/features/registries/client-registry/providers/services/client-http.service.ts","./src/app/models/core/system-notification.type.ts","./src/app/providers/interceptors/azure-token.interceptor.ts","./src/app/providers/interceptors/loading.interceptor.ts","./src/app/providers/interceptors/metadata.interceptor.ts","./src/app/providers/interceptors/notification.interceptor.ts","./src/app/providers/pipes/truncate-file-url.pipe.ts","./src/app/providers/services/authentication.service.ts","./src/app/providers/services/file.service.ts","./src/app/providers/services/token.service.ts","./src/app/store/actions/auth.actions.ts","./src/app/store/actions/file.actions.ts","./src/app/store/actions/system.actions.ts","./src/app/store/effects/auth.effects.ts","./src/app/store/effects/file.effects.ts","./src/app/store/effects/system.effects.ts","./src/app/store/index.ts","./src/app/store/reducers/auth.reducers.ts","./src/app/store/reducers/system.reducers.ts","./src/app/store/selectors/auth.selectors.ts","./src/app/store/selectors/system.selectors.ts","./src/environments/environment.test.ts","./src/main.ts"],"sourcesContent":["import { ADB2CClient } from './adB2c.js';\r\nimport { executeFlow, parseFragment, ADB2C } from './azuread.js';\r\n\r\nconst HASH_KEY_ADT_TOKEN = 'token';\r\nconst HASH_KEY_B2C_ID_TOKEN = 'id_token';\r\n\r\nexport const CubeAuth = {\r\n adtTokenEnabled: false,\r\n\r\n adb2cEnabled: false,\r\n adb2cClient: undefined,\r\n adb2cRedirectUri: undefined,\r\n\r\n adb2cCurrentIdToken: undefined,\r\n\r\n logoutRedirectUri: '',\r\n\r\n credentialsReadyFlag: true,\r\n\r\n onCredentialsReadyCallbacks: [],\r\n onADB2CNewTokenCallbacks: [],\r\n\r\n enableAdTTokens() {\r\n this.adtTokenEnabled = true;\r\n },\r\n\r\n enableADB2C(tenantId, clientId, policy, redirectUri) {\r\n this.adb2cEnabled = true;\r\n this.adb2cClient = new ADB2CClient(tenantId, clientId, policy);\r\n this.adb2cRedirectUri = redirectUri;\r\n },\r\n\r\n setLogutRedirectUri(uri) {\r\n this.logoutRedirectUri = uri;\r\n },\r\n\r\n set onCredentialsReady(f) {\r\n this.onCredentialsReadyCallbacks.push(f);\r\n },\r\n\r\n set onADB2CNewToken(f) {\r\n this.onADB2CNewTokenCallbacks.push(f);\r\n },\r\n\r\n _credentialsReady(authType, authToken) {\r\n console.debug('[CUBE AUTH] Credentials are ready.');\r\n if (this.credentialsReadyFlag === true) {\r\n this.credentialsReadyFlag = false;\r\n for (var callback of this.onCredentialsReadyCallbacks) callback(authType, authToken);\r\n }\r\n },\r\n\r\n _ADB2CNewToken(idToken, expires, profileInfo) {\r\n console.debug('[CUBE AUTH] New token available for AD B2C');\r\n this.adb2cCurrentIdToken = idToken;\r\n if (this.credentialsReadyFlag === true) this._credentialsReady('Bearer', idToken);\r\n for (var callback of this.onADB2CNewTokenCallbacks) callback(idToken, expires, profileInfo);\r\n },\r\n\r\n auth() {\r\n const q = parseFragment();\r\n\r\n if (this.adtTokenEnabled === true && HASH_KEY_ADT_TOKEN in q) {\r\n this._credentialsReady('Basic', q[HASH_KEY_ADT_TOKEN]);\r\n } else if (this.adb2cEnabled === true) {\r\n // Authentication flow\r\n executeFlow(this.adb2cClient, this.adb2cRedirectUri, CubeAuth._ADB2CNewToken.bind(this));\r\n } else throw new Error('No way to authenticate the user.');\r\n },\r\n\r\n async logout() {\r\n var redirectUrl = this.logoutRedirectUri;\r\n if (this.adb2cCurrentIdToken != undefined) {\r\n await ADB2C.persistence.clear();\r\n redirectUrl = this.adb2cClient.getLogoutUrl(this.adb2cCurrentIdToken, redirectUrl);\r\n }\r\n location.href = redirectUrl;\r\n }\r\n};\r\n","/**\r\n * This module handles the integration with Azure AD B2C.\r\n *\r\n */\r\n\r\nexport class PKCE {\r\n /**\r\n * Proof Key for Code Exchange by OAuth Public Clients\r\n * https://datatracker.ietf.org/doc/html/rfc7636\r\n */\r\n\r\n // METHOD_PLAIN = 'plain';\r\n // METHOD_SHA = 'S256';\r\n\r\n constructor(verifier) {\r\n this.verifier = verifier;\r\n }\r\n\r\n getCodeVerifier() {\r\n return this.verifier;\r\n }\r\n\r\n getPlainCodeChallenge() {\r\n return this.verifier;\r\n }\r\n\r\n async getCodeChallenge() {\r\n const msgBuffer = new TextEncoder().encode(this.verifier);\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\r\n return PKCE.base64URLEncode(PKCE.arraybufferToString(hashBuffer));\r\n }\r\n\r\n static build() {\r\n return new this(this.buildVerifier());\r\n }\r\n\r\n static buildVerifier() {\r\n const length = 43 + Math.floor(Math.random() * (1 + 128 - 43));\r\n const array = new Uint8Array(30);\r\n const randomBytes = window.crypto.getRandomValues(array);\r\n const randomSymbols = this.base64URLEncode(randomBytes.toString());\r\n return randomSymbols.slice(0, length);\r\n }\r\n\r\n static base64URLEncode(str) {\r\n return btoa(str)\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n }\r\n\r\n static arraybufferToString(array) {\r\n const u8array = new Uint8Array(array);\r\n var t,\r\n output = '';\r\n for (var i of u8array) {\r\n t = i.toString(16);\r\n if (t.length < 2) t = '0' + t;\r\n output += '\\\\x' + t;\r\n }\r\n return eval(\"'\" + output + \"'\");\r\n }\r\n\r\n static async verify(verifier, challenge, method) {\r\n if (method == \"plain\") return verifier == challenge;\r\n else return (await new this(verifier).getCodeChallenge()) == challenge;\r\n }\r\n\r\n static async getKeys() {\r\n var obj = {},\r\n pkce = this.build();\r\n obj['codeVerifier'] = pkce.getCodeVerifier();\r\n try {\r\n obj['codeChallengeMethod'] = 'S256';\r\n obj['codeChallenge'] = await pkce.getCodeChallenge();\r\n } catch (e) {\r\n console.warn(\"[PKCE] Using 'plain' method.\");\r\n obj['codeChallengeMethod'] = \"plain\";\r\n obj['codeChallenge'] = pkce.getPlainCodeChallenge();\r\n } finally {\r\n return obj;\r\n }\r\n }\r\n}\r\n\r\nfunction mergeQuery(obj) {\r\n var query = '';\r\n for (var key of Object.keys(obj)) {\r\n query += key + '=' + encodeURIComponent(obj[key]) + '&';\r\n }\r\n return query;\r\n}\r\n\r\nexport class ADB2CClient {\r\n constructor(tenant, clientId, policy) {\r\n this.tenant = tenant;\r\n this.clientId = clientId;\r\n this.policy = policy;\r\n this.baseUrl = 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/b2c_1a_signup_signin/oauth2/v2.0/';\r\n this.authAPI = this.baseUrl + 'authorize';\r\n this.tokenAPI = this.baseUrl + 'token';\r\n }\r\n\r\n getLogoutUrl(id_token, redirectUri) {\r\n return (\r\n this.baseUrl +\r\n 'logout?' +\r\n mergeQuery({\r\n post_logout_redirect_uri: redirectUri,\r\n id_token_hint: id_token\r\n })\r\n );\r\n }\r\n\r\n getLoginUrl(redirectUri, pkce, options) {\r\n return (\r\n this.authAPI +\r\n '?' +\r\n mergeQuery({\r\n client_id: this.clientId,\r\n redirect_uri: redirectUri,\r\n code_challenge: pkce.codeChallenge,\r\n code_challenge_method: pkce.codeChallengeMethod,\r\n response_type: options.responseType || 'code',\r\n response_mode: options.responseMode || 'fragment',\r\n scope: options.scope || 'openid',\r\n state: options.state\r\n })\r\n );\r\n }\r\n\r\n async getTokenInfoByRefreshToken(refreshToken) {\r\n var r = await fetch(this.tokenAPI, {\r\n method: 'POST',\r\n headers: {\r\n 'content-type': 'application/x-www-form-urlencoded'\r\n },\r\n body: mergeQuery({\r\n client_id: this.clientId,\r\n scope: 'openid offline_access profile',\r\n grant_type: 'refresh_token',\r\n refresh_token: refreshToken\r\n })\r\n });\r\n return await r.json();\r\n }\r\n\r\n async getTokenInfoByCode(code, codeVerifier) {\r\n var r = await fetch(this.tokenAPI, {\r\n method: 'POST',\r\n headers: {\r\n 'content-type': 'application/x-www-form-urlencoded'\r\n },\r\n body: mergeQuery({\r\n client_id: this.clientId,\r\n scope: 'openid offline_access profile',\r\n grant_type: 'authorization_code',\r\n code: code,\r\n code_verifier: codeVerifier\r\n })\r\n });\r\n return await r.json();\r\n }\r\n}\r\n","import {PKCE} from \"./adB2c.js\"\r\n\r\n\r\nconst ADB2C_STATE_KEY = \"AADState\"\r\n\r\n\r\nexport function parseFragment() {\r\n\t/**\r\n\t * TODOs\r\n\t * - handle multi parameters and objects\r\n\t * - accept string 'query' as argument\r\n\t */\r\n\tvar t, q = {}; \r\n\tfor(var p of document.location.hash.slice(1).split(\"&\")){\r\n\t\tt = p.split(\"=\")\r\n\t\tq[t[0]] = t[1]\r\n\t}\r\n\treturn q\r\n}\r\n\r\n\r\nexport async function executeFlow(client, redirectUri, callback) {\r\n\r\n\tconst fragment = parseFragment()\r\n\tconst token = await ADB2C.persistence.getRefreshToken()\r\n\r\n\tif( \"error\" in fragment) {\r\n\r\n\t\tconsole.error(fragment[\"error\"])\r\n\t\tconsole.log(fragment)\r\n\t\t// TODO: raise exception ?\r\n\r\n\t}\r\n\telse if(token != null && Date.now() < token.expires) {\r\n\r\n\t\t// Using refresh token\r\n\t\tconsole.log(\"'Refresh token' found in storage. Retrieving tokens information by 'refresh token'.\")\r\n\t\tvar info = await client.getTokenInfoByRefreshToken(token.refreshToken)\r\n\t\tawait processTokensInfo(info, client, callback)\r\n\r\n\t}\r\n\telse if(!(\"code\" in fragment)) {\r\n\r\n\t\t// Redirect to login page\r\n\t\tconsole.log(\"'Code' not found in fragment. Redirecting to login page.\")\r\n\t\t// Generates PKCE keys\r\n\t\tconst pkce = await PKCE.getKeys()\r\n\t\t// Saves the application state\r\n\t\tconst stateId = crypto.randomUUID()\r\n\t\tconst state = {\r\n\t\t\tcodeVerifier: pkce.codeVerifier\r\n\t\t}\r\n\t\tsessionStorage.setItem(stateId, JSON.stringify(state))\r\n\t\t// Generates login URL\r\n\t\tvar url = client.getLoginUrl(redirectUri, pkce, {\r\n\t\t\tstate: stateId,\r\n\t\t\tresponse_type: \"code\",\r\n\t\t\tresponse_mode: \"fragment\",\r\n\t\t\tscope: \"openid\"\r\n\t\t})\r\n\t\t// Redirects\r\n\t\tlocation.href = url\r\n\r\n\t}\r\n\telse {\r\n\r\n\t\t// Using code\r\n\t\tconsole.log(\"'Code' found in fragment. Retrieving token information by 'code'.\")\r\n\t\t// Retrieves state information\r\n\t\tvar state = JSON.parse(sessionStorage.getItem(fragment.state))\r\n\t\t// Gets tokens information\r\n\t\tvar info = await client.getTokenInfoByCode(fragment.code, state.codeVerifier)\r\n\t\t// Clears state information\r\n\t\tsessionStorage.removeItem(fragment.state)\r\n\t\t// Clears URL fragment\r\n\t\tlocation.hash = \"#\"\r\n\t\tawait processTokensInfo(info, client, callback)\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\nasync function processTokensInfo(info, client, callback) {\r\n\tif(\"error\" in info) {\r\n\t\tconsole.error(\"Unable to process token info. Token won't be refreshed.\")\r\n\t\tconsole.error(info)\r\n\t}\r\n\telse {\r\n\t\t// Calculates token expiration\r\n\t\tvar expires = 1000 * (info.not_before + info.id_token_expires_in)\r\n\t\tconsole.log(\"Access token expires at \", expires)\r\n\t\tconsole.log(\"Access token expires in \", expires - Date.now())\r\n\t\t// Stores the refresh token\r\n\t\tawait ADB2C.persistence.saveRefreshToken(info.refresh_token, expires)\r\n\t\t// Set timeout to refresh the id_token one minute before it expires\r\n\t\twindow.setTimeout(async (client, refreshToken, callback) => {\r\n\t\t\tprocessTokensInfo(\r\n\t\t\t\tawait client.getTokenInfoByRefreshToken(refreshToken),\r\n\t\t\t\tclient,\r\n\t\t\t\tcallback\r\n\t\t\t)\r\n\t\t}, expires - Date.now() - 60000, client, info.refresh_token, callback)\r\n\t\t// Callback\r\n\t\tcallback(info.id_token, expires, JSON.parse(atob(info[\"profile_info\"])))\r\n\t}\r\n}\r\n\r\n\r\nexport const ADB2C = {\r\n\r\n\tpersistence : {\r\n\r\n\t\tasync getRefreshToken() {\r\n\t\t\ttry {\r\n\t\t\t\treturn JSON.parse(localStorage.getItem(ADB2C_STATE_KEY))\r\n\t\t\t}\r\n\t\t\tcatch(e) {\r\n\t\t\t\tconsole.debug(\"[AAD B2C] Refresh token not found in storage.\")\r\n\t\t\t\treturn null\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tasync saveRefreshToken(refreshToken, expires) {\r\n\t\t\tlocalStorage.setItem(ADB2C_STATE_KEY, JSON.stringify({\r\n\t\t\t\t\"refreshToken\": refreshToken,\r\n\t\t\t\t\"expires\": expires\r\n\t\t\t}))\r\n\t\t},\r\n\r\n\t\tasync clear() {\r\n\t\t\tlocalStorage.removeItem(ADB2C_STATE_KEY)\r\n\t\t}\r\n\r\n\t}\r\n\r\n}","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ResponseModel } from '../models/response-model.type';\r\n\r\ninterface IDiasBaseEffects {\r\n handleError(error: HttpErrorResponse): Error;\r\n}\r\n\r\n@Injectable()\r\nexport class DiasBaseEffects implements IDiasBaseEffects {\r\n handleError(error: HttpErrorResponse): Error {\r\n return new Error((error.error as ResponseModel).error);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ResponseModel } from '../models/response-model.type';\r\n\r\nexport interface IDiasHttpService {\r\n get(path: string, params: HttpParams): Observable>;\r\n post(path: string, data: T, params: HttpParams): Observable>;\r\n put(path: string, data: T, params: HttpParams): Observable>;\r\n delete(path: string, params: HttpParams): Observable>;\r\n}\r\n\r\n@Injectable()\r\nexport abstract class DiasHttpService implements IDiasHttpService {\r\n constructor(protected readonly http: HttpClient) {}\r\n\r\n get(path: string, params: HttpParams = new HttpParams()): Observable> {\r\n return this.http.get>(`${environment.api_url}/${path}`, { params });\r\n }\r\n\r\n post(path: string, data: T, params: HttpParams = new HttpParams()): Observable> {\r\n return this.http.post>(`${environment.api_url}/${path}`, data, { params });\r\n }\r\n\r\n put(path: string, data: T, params: HttpParams = new HttpParams()): Observable> {\r\n return this.http.put>(`${environment.api_url}/${path}`, data, { params });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n delete(path: string, params: HttpParams = new HttpParams()): Observable> {\r\n return this.http.delete>(`${environment.api_url}/${path}`, { params });\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { Store } from '@ngrx/store';\r\nimport { filter, map } from 'rxjs';\r\n\r\nimport { AppState } from './store/states/app.state';\r\nimport { Theme } from './models/core/theme.type';\r\nimport { selectTheme } from './store/selectors/system.selectors';\r\nimport { CubeLayoutModeHandlerDirective } from './directives/layout-mode-handler.directive';\r\nimport { NotificationHandlerDirective } from './directives/notification-handler.directive';\r\nimport { CubeTranslateDirective } from './directives/translate.directive';\r\nimport { TokenService } from './providers/services/token.service';\r\nimport { AuthActions } from './store/actions/auth.actions';\r\nimport { AuthenticationService } from './providers/services/authentication.service';\r\nimport { TokenDetails } from './models/auth/token-details.type';\r\nimport { concatLatestFrom } from '@ngrx/operators';\r\n\r\nimport { selectTokenDetails, selectUserTenants } from './store/selectors/auth.selectors';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\n@Component({\r\n selector: 'cube-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterOutlet,\r\n NotificationHandlerDirective,\r\n CubeTranslateDirective,\r\n CubeLayoutModeHandlerDirective,\r\n ],\r\n})\r\nexport class AppComponent {\r\n private readonly authService: AuthenticationService = inject(AuthenticationService);\r\n private readonly store: Store = inject(Store);\r\n private readonly tokenService: TokenService = inject(TokenService);\r\n isDarkTheme: boolean = false;\r\n themeClass: string = 'light-theme';\r\n\r\n constructor() {\r\n this.store.dispatch(AuthActions.login());\r\n \r\n this.authService.token.pipe(\r\n filter((token: string | undefined): token is string => !!token)).subscribe(token => {\r\n const uniqueId = this.tokenService.getUniqueId(token);\r\n this.store.dispatch(AuthActions.setTokenDetails({tokenDetails: {...jwtDecode(token), uniqueId} as TokenDetails}))})\r\n \r\n this.store\r\n .select(selectTheme)\r\n .pipe(\r\n // eslint-disable-next-line @ngrx/avoid-mapping-selectors\r\n map((theme: Theme): boolean => theme === 'dark'),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe({\r\n next: (isDark: boolean) => {\r\n this.isDarkTheme = isDark;\r\n const newThemeClass: string = isDark ? 'dark-theme' : 'light-theme';\r\n\r\n const bodyElement = document.body;\r\n if (bodyElement) {\r\n bodyElement.classList.remove(this.themeClass);\r\n bodyElement.classList.add(newThemeClass);\r\n this.themeClass = newThemeClass;\r\n }\r\n },\r\n });\r\n this.store\r\n .select(selectTokenDetails)\r\n .pipe(\r\n filter((tokenDetails: TokenDetails | undefined): tokenDetails is TokenDetails => !!tokenDetails),\r\n concatLatestFrom(() => this.store.select(selectUserTenants)),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe({\r\n next: ([tokenDetails, tenants]) => {\r\n if (!tenants.length) {\r\n this.store.dispatch(AuthActions.getUserTenants({ uniqueId: tokenDetails.uniqueId }));\r\n }\r\n },\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","import { ApplicationConfig, LOCALE_ID, importProvidersFrom } from '@angular/core';\r\nimport { registerLocaleData } from '@angular/common';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport localeIt from '@angular/common/locales/it';\r\nimport { provideRouter, withComponentInputBinding, withViewTransitions } from '@angular/router';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\n/* import {\r\n MSAL_GUARD_CONFIG,\r\n MSAL_INSTANCE,\r\n MSAL_INTERCEPTOR_CONFIG,\r\n MsalBroadcastService,\r\n MsalGuard,\r\n MsalService,\r\n} from '@azure/msal-angular'; */\r\nimport { provideStore } from '@ngrx/store';\r\nimport { provideStoreDevtools } from '@ngrx/store-devtools';\r\nimport { provideEffects } from '@ngrx/effects';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/* import { MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory } from './configs/msal.config';\r\n */import { ROOT_INTERCEPTORS } from './app.interceptors';\r\nimport { ROUTES } from './app.routes';\r\n\r\nimport * as store from './store';\r\nimport * as translate from './configs/translate.config';\r\nimport { ClientHttpService } from './features/registries/client-registry/providers/services/client-http.service';\r\n\r\nregisterLocaleData(localeIt);\r\n\r\nexport const appConfig: ApplicationConfig = {\r\n providers: [\r\n provideHttpClient(withInterceptorsFromDi()),\r\n provideRouter(ROUTES, withComponentInputBinding(), withViewTransitions()),\r\n provideStore(store.reducers, { metaReducers: store.metaReducers }),\r\n provideStoreDevtools(store.devtoolsConfig),\r\n provideEffects(store.effects),\r\n provideAnimations(),\r\n importProvidersFrom(TranslateModule.forRoot(translate.config)),\r\n { provide: LOCALE_ID, useValue: 'it' },\r\n ...ROOT_INTERCEPTORS,\r\n ClientHttpService\r\n /* {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory,\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory,\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory,\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService, */\r\n ],\r\n};\r\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AzureTokenInterceptor } from './providers/interceptors/azure-token.interceptor';\r\nimport { LoadingInterceptor } from './providers/interceptors/loading.interceptor';\r\nimport { MetadataInterceptor } from './providers/interceptors/metadata.interceptor';\r\nimport { NotificationInterceptor } from './providers/interceptors/notification.interceptor';\r\n\r\nexport const ROOT_INTERCEPTORS = [\r\n { provide: HTTP_INTERCEPTORS, useClass: AzureTokenInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: MetadataInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: NotificationInterceptor, multi: true },\r\n];\r\n","import { Routes } from '@angular/router';\r\n/* import { MsalGuard } from '@azure/msal-angular';\r\n */\r\nexport const ROUTES: Routes = [\r\n { path: '', redirectTo: 'dias', pathMatch: 'full' },\r\n {\r\n path: 'dias',\r\n loadChildren: () => import('./features/main/main.routes'),\r\n canActivate: [],\r\n },\r\n { path: '**', redirectTo: 'dias/homepage' },\r\n];\r\n","const solution = 'dias_steel_decarbon';\r\nconst version = '2.4.1';\r\nconst snackbar_config = {\r\n snackbar_duration: 2000,\r\n snackbar_error_duration: 10000,\r\n};\r\nconst bypass_auth_token_resources = ['blob.core.windows.net', '/assets/i18n/', 'api.powerbi.com'];\r\n\r\nexport const GLOBAL_CONFIG = {\r\n solution,\r\n snackbar_config,\r\n bypass_auth_token_resources,\r\n version,\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { MissingTranslationHandler, MissingTranslationHandlerParams, TranslateLoader, TranslateModuleConfig } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\n\r\nexport class CubeMissingTranslationHandler implements MissingTranslationHandler {\r\n handle(params: MissingTranslationHandlerParams): string {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return (params.interpolateParams as any)?.missing || 'Missing translation';\r\n }\r\n}\r\n\r\nexport function httpTranslateLoader(http: HttpClient) {\r\n return new TranslateHttpLoader(http, './assets/i18n/', '.json');\r\n}\r\n\r\nexport const config: TranslateModuleConfig = {\r\n defaultLanguage: 'en',\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: httpTranslateLoader,\r\n deps: [HttpClient],\r\n },\r\n isolate: false,\r\n missingTranslationHandler: { provide: MissingTranslationHandler, useClass: CubeMissingTranslationHandler },\r\n};\r\n\r\nexport const locales: Array<{ code: string; label: string }> = [\r\n { code: 'it', label: 'Italiano' },\r\n { code: 'en', label: 'English' },\r\n { code: 'fr', label: 'Français' },\r\n];\r\n","/* eslint-disable @ngrx/no-typed-global-store */\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { Directive, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Store } from '@ngrx/store';\r\nimport { delay, map } from 'rxjs';\r\n\r\nimport { SystemActions } from '../store/actions/system.actions';\r\nimport { AppState } from '../store/states/app.state';\r\n\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({ selector: '[cubeLayoutModeHandler]', standalone: true })\r\nexport class CubeLayoutModeHandlerDirective {\r\n private readonly breakpointObserver = inject(BreakpointObserver);\r\n private readonly store: Store = inject(Store);\r\n\r\n constructor() {\r\n this.breakpointObserver\r\n .observe(['(max-width: 575.98px)'])\r\n .pipe(\r\n delay(1),\r\n map((res) => res.matches),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe({\r\n next: (isResponsive: boolean): void => {\r\n const layoutMode = isResponsive ? 'responsive' : 'desktop';\r\n this.store.dispatch(SystemActions.setLayoutMode({ layoutMode }));\r\n },\r\n });\r\n }\r\n}\r\n","/* eslint-disable @ngrx/no-typed-global-store */\r\nimport { Directive } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Store } from '@ngrx/store';\r\nimport { filter } from 'rxjs';\r\n\r\nimport { AppState } from '../store/states/app.state';\r\nimport { MessageType, SystemNotification } from '../models/core/system-notification.type';\r\nimport { selectNotification } from '../store/selectors/system.selectors';\r\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SystemActions } from '../store/actions/system.actions';\r\n\r\n@Directive({ selector: '[cubeNotificationHandler]', standalone: true })\r\nexport class NotificationHandlerDirective {\r\n constructor(\r\n private readonly store: Store,\r\n private readonly router: Router,\r\n private readonly snackbar: MatSnackBar\r\n ) {\r\n this.store\r\n .select(selectNotification)\r\n .pipe(\r\n filter((notification: SystemNotification | undefined): notification is SystemNotification => !!notification),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe({\r\n next: (notification: SystemNotification) => this.openNotificationSnackbar(notification),\r\n });\r\n\r\n this.router.events\r\n .pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe({\r\n next: () => {\r\n this.store.dispatch(SystemActions.setNotification({ notification: undefined }));\r\n this.snackbar.dismiss();\r\n },\r\n });\r\n }\r\n\r\n private openNotificationSnackbar({ type, message }: SystemNotification): void {\r\n const snackBarConfig = this.snackBarConfig(type);\r\n this.snackbar.open(message, 'close', snackBarConfig);\r\n }\r\n\r\n private snackBarConfig(type: MessageType): MatSnackBarConfig {\r\n const snackBarConfig = new MatSnackBarConfig();\r\n const panelClass = ['snackBarMessage'];\r\n\r\n switch (type) {\r\n case MessageType.Info:\r\n snackBarConfig.duration = environment.snackbar_config.snackbar_duration;\r\n snackBarConfig.panelClass = [...panelClass, 'infoMessage'];\r\n break;\r\n case MessageType.Error:\r\n snackBarConfig.duration = environment.snackbar_config.snackbar_error_duration;\r\n snackBarConfig.panelClass = [...panelClass, 'errorMessage'];\r\n break;\r\n }\r\n\r\n return snackBarConfig;\r\n }\r\n}\r\n","/* eslint-disable @ngrx/no-typed-global-store */\r\nimport { Directive } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Store } from '@ngrx/store';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nimport { SystemActions } from '../store/actions/system.actions';\r\nimport { LanguageOption } from '../models/core/language-option.type';\r\nimport { selectCurrentLang } from '../store/selectors/system.selectors';\r\nimport { AppState } from '../store/states/app.state';\r\nimport { selectAdditionalLanguages } from '../store/selectors/auth.selectors';\r\n\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({ selector: '[cubeTranslate]', standalone: true })\r\nexport class CubeTranslateDirective {\r\n constructor(\r\n private readonly translateService: TranslateService,\r\n private readonly store: Store\r\n ) {\r\n const browserLang = this.translateService.getBrowserLang();\r\n const currentLang: LanguageOption = browserLang === 'it' ? 'it' : 'en';\r\n this.store.dispatch(SystemActions.setCurrentLang({ currentLang }));\r\n\r\n this.store\r\n .select(selectCurrentLang)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe({\r\n next: (language: LanguageOption) => this.translateService.use(language),\r\n });\r\n\r\n this.store\r\n .select(selectAdditionalLanguages)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe({\r\n next: (additional_languages: Array) => {\r\n const browserLang = this.translateService.getBrowserLang();\r\n if (additional_languages.includes(browserLang as LanguageOption)) {\r\n this.store.dispatch(SystemActions.setCurrentLang({ currentLang: browserLang as LanguageOption }));\r\n } else this.store.dispatch(SystemActions.setCurrentLang({ currentLang: 'en' }));\r\n },\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DiasHttpService } from 'src/app/abstractions/dias-http.service';\r\nimport { ResponseModel } from 'src/app/models/response-model.type';\r\nimport { Client } from '../../models/client.type';\r\nimport { ClientConfig } from 'src/app/models/core/client-config.type';\r\n\r\n@Injectable()\r\nexport class ClientHttpService extends DiasHttpService {\r\n path = 'ClientRegistryHttpTrigger';\r\n\r\n constructor(http: HttpClient) {\r\n super(http);\r\n }\r\n\r\n _get(): Observable> {\r\n return super.get(this.path);\r\n }\r\n\r\n _post(client: Client): Observable> {\r\n return super.post(this.path, client);\r\n }\r\n\r\n _put(client: Client): Observable> {\r\n return super.put(this.path, client);\r\n }\r\n\r\n getClientConfig(): Observable>{\r\n return super.get(`${this.path}/customerconfigs`);\r\n }\r\n}\r\n","export type SystemNotification = {\r\n type: MessageType;\r\n message: string;\r\n};\r\n\r\nexport enum MessageType {\r\n Info,\r\n Error,\r\n}\r\n","/* eslint-disable @ngrx/no-typed-global-store */\r\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpStatusCode } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { catchError, filter, map, Observable, of, switchMap, take, throwError } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { TokenDetails, TokenDetailsAccountClaims } from 'src/app/models/auth/token-details.type';\r\nimport { AppState } from 'src/app/store/states/app.state';\r\nimport { Store } from '@ngrx/store';\r\nimport { selectTokenDetails } from 'src/app/store/selectors/auth.selectors';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthState } from 'src/app/store/states/auth.state';\r\n\r\n@Injectable()\r\nexport class AzureTokenInterceptor implements HttpInterceptor {\r\n readonly authService: AuthenticationService = inject(AuthenticationService);\r\n readonly #store: Store = inject(Store);\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n/* const request = this.authService.tokenRequest();\r\n //const tokenDetails: TokenDetails | undefined = this.authService.token.getValue();\r\n\r\n return this.#store.select(selectTokenDetails).pipe(\r\n take(1),\r\n map((accountDetails: TokenDetails | undefined): TokenDetails => {\r\n if (!accountDetails) {\r\n const localValue = localStorage.getItem(`${environment.localStorageKeyPrefix}_auth`);\r\n\r\n if (localValue) {\r\n const authState = JSON.parse(localValue) as AuthState | undefined;\r\n if (authState) {\r\n accountDetails = authState.tokenDetails as TokenDetails;\r\n this.authService.token.next(accountDetails);\r\n }\r\n }\r\n }\r\n\r\n return accountDetails as TokenDetails;\r\n }),\r\n \r\n map((accountDetails: TokenDetails | undefined) => ({\r\n isValidToken: this.authService.isValidToken((accountDetails?.idTokenClaims as TokenDetailsAccountClaims)?.exp),\r\n idToken: accountDetails?.idToken ?? '',\r\n appendToken: this.authService.resourceNeedsToken(req.url),\r\n })),\r\n switchMap(({ isValidToken, idToken, appendToken }) => {\r\n if (!isValidToken && appendToken) {\r\n return this.authService.acquireTokenSilent(request).pipe(\r\n map(({ idToken }) => ({ idToken, appendToken }))\r\n );\r\n } else {\r\n return of({ idToken, appendToken });\r\n }\r\n }),\r\n switchMap(({ idToken, appendToken }) => {\r\n const clonedReq = this.authService.cloneRequest(req, idToken, appendToken);\r\n return next.handle(clonedReq);\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n \r\n if (err.status === HttpStatusCode.Unauthorized || err instanceof InteractionRequiredAuthError) {\r\n this.authService.acquireTokenRedirect(request);\r\n }\r\n return throwError(() => err);\r\n })\r\n ); */\r\n return this.authService.token.pipe(\r\n filter((token: string | undefined): token is string => !!token),\r\n map((token: string) => ({\r\n token,\r\n appendToken: this.authService.resourceNeedsToken(req.url)\r\n })),\r\n switchMap(({ token, appendToken }) => {\r\n const clonedReq =\r\n token && appendToken\r\n ? req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n })\r\n : req;\r\n \r\n return next.handle(clonedReq);\r\n })\r\n );\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { finalize, Observable } from 'rxjs';\r\nimport { SystemActions } from 'src/app/store/actions/system.actions';\r\n\r\n@Injectable()\r\nexport class LoadingInterceptor implements HttpInterceptor {\r\n counter = 0;\r\n\r\n constructor(private readonly store: Store) {}\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n if (!this.counter) {\r\n this.store.dispatch(SystemActions.startLoading());\r\n }\r\n\r\n this.counter++;\r\n\r\n return next.handle(req).pipe(\r\n finalize(() => {\r\n this.counter--;\r\n\r\n if (!this.counter) {\r\n this.store.dispatch(SystemActions.stopLoading());\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class MetadataInterceptor implements HttpInterceptor {\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n const active_tenant = localStorage.getItem(`${environment.localStorageKeyPrefix}_tenant`);\r\n const excludedResources: Array = ['https://diassteeldecarbonstorage.blob.core.windows.net', 'https://api.powerbi.com'];\r\n let headers: HttpHeaders = req.headers;\r\n\r\n if (!excludedResources.some((res) => req.url.includes(res))) {\r\n headers = req.headers.append('x-solution', environment.solution);\r\n\r\n if (active_tenant) {\r\n headers = headers.append('x-company', active_tenant);\r\n }\r\n }\r\n\r\n const clonedReq = req.clone({ headers });\r\n\r\n return next.handle(clonedReq);\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, HttpStatusCode } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { catchError, Observable, tap, throwError } from 'rxjs';\r\nimport { MessageType } from 'src/app/models/core/system-notification.type';\r\nimport { ResponseModel } from 'src/app/models/response-model.type';\r\nimport { SystemActions } from 'src/app/store/actions/system.actions';\r\n\r\n@Injectable()\r\nexport class NotificationInterceptor implements HttpInterceptor {\r\n constructor(private readonly store: Store) {}\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(req).pipe(\r\n tap((response: HttpEvent) => {\r\n const res: HttpResponse> = response as HttpResponse>;\r\n if (res.body?.message) {\r\n this.store.dispatch(SystemActions.setNotification({ notification: { type: MessageType.Info, message: res.body.message } }));\r\n }\r\n }),\r\n catchError((response: HttpErrorResponse) => {\r\n if (!req.url.includes('assets/i18n')) {\r\n let message = '';\r\n\r\n if (req.url.includes('blob.core.windows.net') && response.status === HttpStatusCode.NotFound) {\r\n message = response.statusText;\r\n }\r\n\r\n if (response.error?.error) {\r\n if (typeof response.error?.error === 'string') {\r\n message = response.error.error;\r\n } else {\r\n // temporary fix\r\n message = response.error.error.error_message ?? '';\r\n }\r\n }\r\n\r\n this.store.dispatch(SystemActions.setNotification({ notification: { type: MessageType.Error, message } }));\r\n }\r\n\r\n return throwError(() => response);\r\n })\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'truncateFileUrl', standalone: true })\r\nexport class TruncateFileUrlPipe implements PipeTransform {\r\n transform(value: string) {\r\n return value.split('/').at(-1)?.split('?').at(0);\r\n }\r\n}\r\n","import { HttpClient, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ProfileRole, ProfileFeature, Tenant } from 'src/app/models/auth/admin-tool.type';\r\nimport { environment } from 'src/environments/environment';\r\nimport { CubeAuth } from '../../modules_msal/CubeAuth';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n token: BehaviorSubject = new BehaviorSubject(undefined);\r\n profile: BehaviorSubject = new BehaviorSubject(undefined);\r\n\r\n constructor(\r\n /* private readonly msalService: MsalService, */\r\n private readonly http: HttpClient\r\n ) {}\r\n\r\n tenants(uniqueId: string): Observable> {\r\n return this.http.get>(`${environment.admin_tool_url}/users/${uniqueId}/solutions/${environment.solution}/tenants`);\r\n }\r\n\r\n roles(uniqueId: string, tenant: string): Observable> {\r\n return this.http.get>(\r\n `${environment.admin_tool_url}/tenants/${tenant}/users/${uniqueId}/platforms/CUBE/solutions/${environment.solution}/roles`\r\n );\r\n }\r\n\r\n features(role: string, tenant: string): Observable> {\r\n return this.http.get>(\r\n `${environment.admin_tool_url}/tenants/${tenant}/roles/${role}/platforms/CUBE/solutions/${environment.solution}/features`\r\n );\r\n }\r\n\r\n/* getClientConfig(): Observable {\r\n return this.http.get(`${environment.admin_tool_url}/ClientRegistryHttpTrigger/customerconfigs`);\r\n } */\r\n\r\n /* handleRedirectObservable() {\r\n return this.msalService.handleRedirectObservable();\r\n } */\r\n\r\n login() {\r\n /* this.msalService.loginRedirect();\r\n */\r\n CubeAuth.enableADB2C(\r\n environment.b2cPolicies.tenant,\r\n environment.b2cPolicies.clientId,\r\n environment.b2cPolicies.names.signUpSignIn,\r\n environment.b2cPolicies.redirectUri\r\n );\r\n CubeAuth.setLogutRedirectUri(environment.b2cPolicies.postLogoutRedirectUri);\r\n\r\n CubeAuth.onADB2CNewToken = (idToken: any, expires: any, profileInfo: any) => {\r\n this.token.next(idToken);\r\n this.profile.next(profileInfo.name);\r\n };\r\n\r\n CubeAuth.auth();\r\n }\r\n\r\n logout() {\r\n /* this.msalService.logoutRedirect();\r\n */\r\n\r\n CubeAuth.logout();\r\n this.profile.next(undefined);\r\n this.token.next(undefined);\r\n }\r\n\r\n /* getActiveAccount(): AccountInfo | null {\r\n return this.msalService.instance.getActiveAccount();\r\n }\r\n\r\n acquireTokenSilent(request: SilentRequest): Observable {\r\n return this.msalService.acquireTokenSilent(request);\r\n } */\r\n\r\n /* acquireTokenRedirect(request: RedirectRequest): void {\r\n this.msalService.acquireTokenRedirect(request);\r\n } */\r\n\r\n checkAndSetActiveAccount() {\r\n /**\r\n * If no active account set but there are accounts signed in, sets first account to active account\r\n * To use active account set here, subscribe to inProgress$ first in your component\r\n * Note: Basic usage demonstrated. Your app may require more complicated account selection logic\r\n */\r\n /* const activeAccount = this.getActiveAccount();\r\n const allAccounts = this.msalService.instance.getAllAccounts();\r\n\r\n if (!activeAccount && allAccounts.length > 0) {\r\n this.msalService.instance.setActiveAccount(allAccounts[0]);\r\n } */\r\n }\r\n\r\n resourceNeedsToken(request_url: string): boolean {\r\n return environment.bypass_auth_token_resources.every((resource) => !request_url.includes(resource));\r\n }\r\n\r\n /* tokenRequest(): SilentRequest | RedirectRequest {\r\n const account = this.getActiveAccount() ?? undefined;\r\n\r\n return {\r\n account,\r\n scopes: [],\r\n };\r\n } */\r\n\r\n cloneRequest(req: HttpRequest, idToken: string, append_token: boolean): HttpRequest {\r\n if (append_token) {\r\n const clonedReq = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${idToken}`,\r\n },\r\n });\r\n\r\n return clonedReq;\r\n } else {\r\n return req;\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ResponseModel } from 'src/app/models/response-model.type';\r\nimport { environment } from 'src/environments/environment';\r\nimport { TruncateFileUrlPipe } from '../pipes/truncate-file-url.pipe';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FileService {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n retrieveUrlSASToken(url: string): Observable> {\r\n const params: HttpParams = new HttpParams().appendAll({ url: encodeURIComponent(url) });\r\n return this.http.get>(`${environment.api_url}/OfflineFilesManagerHttpTrigger/file`, { params });\r\n }\r\n\r\n downloadZIP(id: string, resource: string): Observable> {\r\n const params: HttpParams = new HttpParams().appendAll({ id, resource });\r\n return this.http.get>(`${environment.api_url}/OfflineFilesManagerHttpTrigger/zip`, { params });\r\n }\r\n\r\n downloadFromUrl(url: string): Observable> {\r\n return this.http.get(url, { responseType: 'blob', observe: 'response' });\r\n }\r\n\r\n handleDownload(response: HttpResponse) {\r\n if (response.body) {\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(response.body);\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n link.download = this.getFilename(response);\r\n link.click();\r\n }\r\n }\r\n\r\n private getFilename(response: HttpResponse): string {\r\n if (response.body?.type === 'application/zip') {\r\n return 'attachments.zip';\r\n } else {\r\n const truncate_pipe = new TruncateFileUrlPipe();\r\n const filename = response.url?.includes('?')\r\n ? response.url?.split('?').at(0)?.split('/').at(-1)\r\n : truncate_pipe.transform(response.url || '');\r\n return filename || '';\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport {jwtDecode} from 'jwt-decode';\r\n\r\ninterface DecodedToken {\r\n oid?: string; // Object ID\r\n sub?: string; // Subject\r\n [key: string]: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n\r\n constructor() { }\r\n\r\n decodeToken(token: string): DecodedToken | null {\r\n try {\r\n return jwtDecode(token);\r\n } catch (error) {\r\n console.error('Error decoding token:', error);\r\n return null;\r\n }\r\n }\r\n\r\n getUniqueId(token: string): string {\r\n const decodedToken = this.decodeToken(token);\r\n if (decodedToken) {\r\n return decodedToken.oid || decodedToken.sub || '';\r\n }\r\n return '';\r\n }\r\n}","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { createActionGroup, emptyProps, props } from '@ngrx/store';\r\nimport { ProfileFeature, ProfileRole, Tenant } from 'src/app/models/auth/admin-tool.type';\r\nimport { TokenDetails } from 'src/app/models/auth/token-details.type';\r\nimport { ClientConfig } from 'src/app/models/core/client-config.type';\r\n\r\nexport const AuthActions = createActionGroup({\r\n source: 'auth',\r\n events: {\r\n RedirectToGateway: emptyProps(),\r\n logout: emptyProps(),\r\n Login: emptyProps(),\r\n LoginSuccess:props<{ tokenDetails: TokenDetails }>(),\r\n setActiveAccount: emptyProps(),\r\n setTokenDetails: props<{ tokenDetails: TokenDetails }>(),\r\n GetUserTenants: props<{ uniqueId: string }>(),\r\n GetUserTenantsSuccess: props<{ uniqueId: string; tenants: Array }>(),\r\n GetUserTenantsFailure: props<{ error: HttpErrorResponse }>(),\r\n GetUserRoles: props<{ uniqueId: string; tenant: string }>(),\r\n GetUserRolesSuccess: props<{ roles: Array; tenant: string }>(),\r\n GetUserRolesFailure: props<{ error: HttpErrorResponse }>(),\r\n GetUserFeatures: props<{ role: string; tenant: string }>(),\r\n GetUserFeaturesSuccess: props<{ features: Array }>(),\r\n GetClientConfig: emptyProps(),\r\n GetClientConfigSuccess: props<{ config: ClientConfig}>(),\r\n GetClientConfigFailure: props<{ error: HttpErrorResponse }>(),\r\n GetUserFeaturesFailure: props<{ error: HttpErrorResponse }>(),\r\n setActiveRole: props<{ active_role: ProfileRole }>(),\r\n setActiveTenant: props<{ active_tenant: Tenant }>(),\r\n },\r\n});\r\n","import { HttpResponse } from '@angular/common/http';\r\nimport { createActionGroup, props } from '@ngrx/store';\r\n\r\nexport const FileActions = createActionGroup({\r\n source: 'File',\r\n events: {\r\n RetrieveSASTokenUrl: props<{ url: string }>(),\r\n RetrieveSASTokenUrlSuccess: props<{ url: string }>(),\r\n RetrieveSASTokenUrlFailure: props<{ error: Error }>(),\r\n RetrieveZIPUrl: props<{ resource: string; id: string }>(),\r\n RetrieveZIPUrlSuccess: props<{ url: string }>(),\r\n RetrieveZIPUrlFailure: props<{ error: Error }>(),\r\n DownloadFromUrl: props<{ url: string }>(),\r\n DownloadFromUrlSuccess: props<{ response: HttpResponse }>(),\r\n DownloadFromUrlFailure: props<{ error: Error }>(),\r\n },\r\n});\r\n","import { NavigationBehaviorOptions } from '@angular/router';\r\nimport { createActionGroup, props, emptyProps } from '@ngrx/store';\r\nimport { LanguageOption } from 'src/app/models/core/language-option.type';\r\nimport { LayoutMode } from 'src/app/models/core/layout-mode.type';\r\nimport { SystemNotification } from 'src/app/models/core/system-notification.type';\r\nimport { Theme } from 'src/app/models/core/theme.type';\r\n\r\nexport const SystemActions = createActionGroup({\r\n source: 'System',\r\n events: {\r\n OpenPage: props<{ url: string; target?: string }>(),\r\n Redirect: props<{ url: string; extras?: NavigationBehaviorOptions }>(),\r\n RedirectToCourtesyPage: emptyProps(),\r\n RedirectToHomePage: emptyProps(),\r\n SetCurrentLang: props<{ currentLang: LanguageOption }>(),\r\n SetLayoutMode: props<{ layoutMode: LayoutMode }>(),\r\n SetNotification: props<{ notification: SystemNotification | undefined }>(),\r\n SetTheme: props<{ theme: Theme }>(),\r\n ChangeTheme: emptyProps(),\r\n StartLoading: emptyProps(),\r\n StopLoading: emptyProps(),\r\n },\r\n});\r\n","/* eslint-disable @ngrx/no-typed-global-store */\r\n/* eslint-disable @ngrx/no-multiple-actions-in-effects */\r\nimport { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\rimport { concatLatestFrom } from '@ngrx/operators';\n\nimport { Store } from '@ngrx/store';\r\nimport { catchError, delay, switchMap, map, of, tap } from 'rxjs';\r\n\r\nimport { AuthenticationService } from 'src/app/providers/services/authentication.service';\r\nimport { AuthActions } from '../actions/auth.actions';\r\nimport { ProfileFeature, Tenant } from 'src/app/models/auth/admin-tool.type';\r\nimport { SystemActions } from '../actions/system.actions';\r\nimport { selectActiveTenant, selectTokenDetails } from '../selectors/auth.selectors';\r\nimport { AppState } from '../states/app.state';\r\nimport { ProfileRole } from 'src/app/models/auth/admin-tool.type';\r\nimport { environment } from 'src/environments/environment';\r\nimport { TokenDetails } from 'src/app/models/auth/token-details.type';\r\nimport { ClientConfig } from 'src/app/models/core/client-config.type';\r\nimport { ClientHttpService } from 'src/app/features/registries/client-registry/providers/services/client-http.service';\r\nimport { ResponseModel } from 'src/app/models/response-model.type';\r\n\r\n@Injectable()\r\nexport class AuthEffects {\r\n private readonly authService: AuthenticationService = inject(AuthenticationService);\r\n private readonly clientHttpService: ClientHttpService = inject(ClientHttpService);\r\n private readonly actions$: Actions = inject(Actions);\r\n private readonly store: Store = inject(Store);\r\n\r\n redirectToGateway$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.redirectToGateway),\r\n tap(() => this.authService.login())\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n\r\n changeActiveTenant$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.setActiveTenant),\r\n tap(({ active_tenant }) => localStorage.setItem(`${environment.localStorageKeyPrefix}_tenant`, active_tenant.name)),\r\n concatLatestFrom(() => this.store.select(selectTokenDetails)),\r\n map(([{ active_tenant }, tokenDetails]) =>\r\n AuthActions.getUserRoles({ uniqueId: tokenDetails?.uniqueId ?? '', tenant: active_tenant.name })\r\n )\r\n );\r\n });\r\n\r\n changeActiveRole$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.setActiveRole),\r\n concatLatestFrom(() => this.store.select(selectActiveTenant)),\r\n map(([{ active_role }, tenant]) => AuthActions.getUserFeatures({ role: active_role.name, tenant }))\r\n );\r\n });\r\n\r\n userTenants$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getUserTenants),\r\n switchMap(({ uniqueId }) =>\r\n this.authService.tenants(uniqueId).pipe(\r\n switchMap((tenants: Array) => {\r\n if (tenants.length) {\r\n const current_tenant: string | null = localStorage.getItem(`${environment.localStorageKeyPrefix}_tenant`);\r\n const active_tenant: Tenant = current_tenant ? { name: current_tenant, info: '' } : tenants[0];\r\n return [AuthActions.getUserTenantsSuccess({ uniqueId, tenants }), AuthActions.setActiveTenant({ active_tenant })];\r\n } else {\r\n return [AuthActions.setTokenDetails({ tokenDetails: {} }), SystemActions.redirectToCourtesyPage()];\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => of(AuthActions.getUserTenantsFailure({ error })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n userTenantsFailed$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getUserTenantsFailure, AuthActions.getUserRolesFailure),\r\n tap(({ error }) => {\r\n if (error.status === HttpStatusCode.NotFound) {\r\n // eslint-disable-next-line @ngrx/no-dispatch-in-effects\r\n this.store.dispatch(SystemActions.redirectToCourtesyPage());\r\n }\r\n })\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n\r\n userRoles$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getUserRoles),\r\n delay(200),\r\n switchMap(({ uniqueId, tenant }) =>\r\n this.authService.roles(uniqueId, tenant).pipe(\r\n map((roles: Array) => {\r\n if (roles.length) {\r\n return AuthActions.getUserRolesSuccess({ roles, tenant });\r\n } else {\r\n return SystemActions.redirectToCourtesyPage();\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => of(AuthActions.getUserRolesFailure({ error })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n userRolesSuccess$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getUserRolesSuccess),\r\n map(({ roles, tenant }) => AuthActions.getUserFeatures({ role: roles.at(0)?.name ?? '', tenant }))\r\n );\r\n });\r\n\r\n userFeatures$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getUserFeatures),\r\n switchMap(({ role, tenant }) =>\r\n this.authService.features(role, tenant).pipe(\r\n map((features: Array) => {\r\n if (features.length) {\r\n return AuthActions.getUserFeaturesSuccess({ features });\r\n } else {\r\n return SystemActions.redirectToCourtesyPage();\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => of(AuthActions.getUserFeaturesFailure({ error })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n getUserFeatureSuccess$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getUserFeaturesSuccess),\r\n map(() => AuthActions.getClientConfig())\r\n );\r\n });\r\n\r\n getClientConfig$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.getClientConfig),\r\n switchMap(() =>\r\n this.clientHttpService.getClientConfig().pipe(\r\n map((response: ResponseModel) => AuthActions.getClientConfigSuccess({config: response.data})),\r\n catchError((error: HttpErrorResponse) => of(AuthActions.getClientConfigFailure({ error })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n setActiveAccount$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.setActiveAccount),\r\n tap(() => this.authService.checkAndSetActiveAccount())\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n\r\n login$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.login),\r\n tap(() => this.authService.login())\r\n \r\n );\r\n },\r\n { dispatch: false }\r\n \r\n );\r\n\r\n logout$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(AuthActions.logout),\r\n tap(() => this.authService.logout())\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { FileService } from 'src/app/providers/services/file.service';\r\nimport { FileActions } from '../actions/file.actions';\r\nimport { catchError, map, of, switchMap, tap } from 'rxjs';\r\nimport { HttpErrorResponse, HttpResponse } from '@angular/common/http';\r\nimport { DiasBaseEffects } from 'src/app/abstractions/dias-base-effects.service';\r\n\r\n@Injectable()\r\nexport class FileEffects extends DiasBaseEffects {\r\n constructor(\r\n private readonly fileService: FileService,\r\n private readonly actions$: Actions\r\n ) {\r\n super();\r\n }\r\n\r\n retrieveFileSASToken$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FileActions.retrieveSASTokenUrl),\r\n switchMap(({ url }) =>\r\n this.fileService.retrieveUrlSASToken(url).pipe(\r\n map(({ data }) => FileActions.retrieveSASTokenUrlSuccess({ url: data })),\r\n catchError((error: HttpErrorResponse) => of(FileActions.retrieveSASTokenUrlFailure({ error: this.handleError(error) })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n retrieveZIPUrl$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FileActions.retrieveZIPUrl),\r\n switchMap(({ id, resource }) =>\r\n this.fileService.downloadZIP(id, resource).pipe(\r\n map(({ data }) => FileActions.retrieveZIPUrlSuccess({ url: data })),\r\n catchError((error: HttpErrorResponse) => of(FileActions.retrieveZIPUrlFailure({ error: this.handleError(error) })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n urlToFileDownload$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FileActions.retrieveSASTokenUrlSuccess, FileActions.retrieveZIPUrlSuccess),\r\n map(({ url }) => FileActions.downloadFromUrl({ url }))\r\n );\r\n });\r\n\r\n downloadFromUrl$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FileActions.downloadFromUrl),\r\n switchMap(({ url }) =>\r\n this.fileService.downloadFromUrl(url).pipe(\r\n map((response: HttpResponse) => FileActions.downloadFromUrlSuccess({ response })),\r\n catchError((error: HttpErrorResponse) => of(FileActions.downloadFromUrlFailure({ error: this.handleError(error) })))\r\n )\r\n )\r\n );\r\n });\r\n\r\n downloadFromUrlSuccess$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(FileActions.downloadFromUrlSuccess),\r\n tap(({ response }) => this.fileService.handleDownload(response))\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { tap } from 'rxjs';\r\nimport { FileService } from 'src/app/providers/services/file.service';\r\nimport { SystemActions } from '../actions/system.actions';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class SystemEffects {\r\n constructor(\r\n private readonly actions: Actions,\r\n private readonly router: Router,\r\n private readonly fileService: FileService\r\n ) {}\r\n\r\n redirect$ = createEffect(\r\n () => {\r\n return this.actions.pipe(\r\n ofType(SystemActions.redirect),\r\n tap(({ url, extras }) => this.router.navigateByUrl(url, extras))\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n\r\n redirectToCourtesyPage$ = createEffect(\r\n () => {\r\n return this.actions.pipe(\r\n ofType(SystemActions.redirectToCourtesyPage),\r\n tap(() => {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n window.location.href = environment.b2cPolicies.redirectCourtesyPageUri;\r\n })\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n\r\n redirectToHomePage$ = createEffect(\r\n () => {\r\n return this.actions.pipe(\r\n ofType(SystemActions.redirectToHomePage),\r\n tap(() => this.router.navigateByUrl('dias/homepage'))\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n\r\n openPage$ = createEffect(\r\n () => {\r\n return this.actions.pipe(\r\n ofType(SystemActions.openPage),\r\n tap(({ url, target }) => window.open(url, target))\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Type } from '@angular/core';\r\nimport { ActionReducer, ActionReducerMap, MetaReducer, RuntimeChecks } from '@ngrx/store';\r\nimport { StoreDevtoolsConfig } from '@ngrx/store-devtools';\r\nimport { localStorageSync, LocalStorageConfig } from 'ngrx-store-localstorage';\r\n\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthEffects } from './effects/auth.effects';\r\nimport { FileEffects } from './effects/file.effects';\r\nimport { SystemEffects } from './effects/system.effects';\r\nimport { authReducers } from './reducers/auth.reducers';\r\nimport { systemReducers } from './reducers/system.reducers';\r\nimport { AppState } from './states/app.state';\r\n\r\nexport const reducers: ActionReducerMap = {\r\n auth: authReducers,\r\n system: systemReducers,\r\n};\r\n\r\nexport const effects: Array> = [AuthEffects, FileEffects, SystemEffects];\r\n\r\nexport const runtimeChecks: RuntimeChecks = {\r\n strictActionImmutability: true,\r\n strictActionSerializability: true,\r\n strictActionWithinNgZone: true,\r\n strictStateImmutability: true,\r\n strictStateSerializability: true,\r\n strictActionTypeUniqueness: true,\r\n};\r\n\r\nexport const devtoolsConfig: StoreDevtoolsConfig = {\r\n maxAge: 25,\r\n logOnly: environment.production,\r\n};\r\n\r\nfunction localStorageSyncReducer(reducer: ActionReducer): ActionReducer {\r\n return localStorageSync(localStorageConfig)(reducer);\r\n}\r\n\r\nconst localStorageConfig: LocalStorageConfig = {\r\n keys: ['auth', { system: ['theme'] }],\r\n rehydrate: true,\r\n storageKeySerializer: (key: string) => `${environment.localStorageKeyPrefix}_${key}`,\r\n};\r\n\r\nexport const metaReducers: Array> = [localStorageSyncReducer];\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport { createReducer, on } from '@ngrx/store';\r\nimport { AuthActions } from '../actions/auth.actions';\r\nimport { AuthState } from '../states/auth.state';\r\nimport { User } from 'src/app/models/auth/admin-tool.type';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nconst INIT_STATE: AuthState = {\r\n tokenDetails: undefined,\r\n user: undefined,\r\n config: undefined\r\n};\r\n\r\nexport const authReducers = createReducer(\r\n INIT_STATE,\r\n on(\r\n AuthActions.getUserTenantsSuccess,\r\n (state: AuthState, { tenants }): AuthState => ({\r\n ...state,\r\n user: {\r\n ...(state.user as User),\r\n tenants,\r\n active_tenant: tenants.find((tenant) => tenant.name !== 'root')!,\r\n },\r\n })\r\n ),\r\n on(\r\n AuthActions.getUserRolesSuccess,\r\n (state: AuthState, { roles }): AuthState => ({\r\n ...state,\r\n user: {\r\n ...(state.user as User),\r\n roles,\r\n active_role: roles.at(0)!,\r\n },\r\n })\r\n ),\r\n on(\r\n AuthActions.getUserFeaturesSuccess,\r\n (state: AuthState, { features }): AuthState => ({\r\n ...state,\r\n user: {\r\n ...(state.user as User),\r\n features,\r\n },\r\n })\r\n ),\r\n on(AuthActions.setTokenDetails, (state: AuthState, { tokenDetails }): AuthState => {\r\n const given_name = tokenDetails.name;\r\n const auth = { tokenDetails, user: { ...state.user, given_name } as User };\r\n return { ...state, ...auth };\r\n }),\r\n on(\r\n AuthActions.setActiveTenant,\r\n (state: AuthState, { active_tenant }): AuthState => ({\r\n ...state,\r\n user: {\r\n ...(state.user as User),\r\n active_tenant,\r\n },\r\n })\r\n ),\r\n on(\r\n AuthActions.setActiveRole,\r\n (state: AuthState, { active_role }): AuthState => ({\r\n ...state,\r\n user: {\r\n ...(state.user as User),\r\n active_role,\r\n },\r\n })\r\n ),\r\n on(\r\n AuthActions.getClientConfigSuccess,\r\n (state: AuthState, { config }): AuthState => ({\r\n ...state,\r\n config: {\r\n enabled_lang: config.enabled_lang,\r\n enabled_claim: config.enabled_claim\r\n }\r\n })\r\n ),\r\n \r\n on(AuthActions.logout, (state: AuthState): AuthState => ({ ...state, tokenDetails: undefined, user: undefined }))\r\n);\r\n","import { createReducer, on } from '@ngrx/store';\r\nimport { SystemActions } from '../actions/system.actions';\r\nimport { SystemState } from '../states/system.state';\r\n\r\nconst INIT_STATE: SystemState = {\r\n currentLang: 'it',\r\n layoutMode: 'desktop',\r\n loading: false,\r\n notification: undefined,\r\n theme: 'dark',\r\n};\r\n\r\nexport const systemReducers = createReducer(\r\n INIT_STATE,\r\n on(SystemActions.setCurrentLang, (state: SystemState, { currentLang }): SystemState => ({ ...state, currentLang })),\r\n on(SystemActions.setLayoutMode, (state: SystemState, { layoutMode }): SystemState => ({ ...state, layoutMode })),\r\n on(SystemActions.setNotification, (state: SystemState, { notification }): SystemState => ({ ...state, notification })),\r\n on(SystemActions.setTheme, (state: SystemState, { theme }): SystemState => ({ ...state, theme })),\r\n on(SystemActions.changeTheme, (state: SystemState): SystemState => ({ ...state, theme: state.theme === 'dark' ? 'light' : 'dark' })),\r\n on(SystemActions.startLoading, (state: SystemState): SystemState => ({ ...state, loading: true })),\r\n on(SystemActions.stopLoading, (state: SystemState): SystemState => ({ ...state, loading: false }))\r\n);\r\n","import { createSelector } from '@ngrx/store';\r\nimport { TokenDetails } from 'src/app/models/auth/token-details.type';\r\nimport { AppState } from '../states/app.state';\r\nimport { AuthState } from '../states/auth.state';\r\nimport { Tenant, User } from 'src/app/models/auth/admin-tool.type';\r\nimport { LanguageOption } from 'src/app/models/core/language-option.type';\r\n\r\nconst authState = (state: AppState): AuthState => state.auth;\r\nexport const selectTokenDetails = createSelector(authState, (state: AuthState): TokenDetails | undefined => state.tokenDetails);\r\nexport const selectUserDetails = createSelector(authState, (state: AuthState): User | undefined => state.user);\r\nexport const selectUserTenants = createSelector(authState, (state: AuthState): Array => state.user?.tenants ?? new Array());\r\nexport const selectActiveTenant = createSelector(selectUserDetails, (state: User | undefined): string => state?.active_tenant?.name ?? '');\r\nexport const selectAdditionalLanguages= createSelector(authState, (state: AuthState): Array => state?.config?.enabled_lang ?? []);\r\nexport const selectClientClaims= createSelector(authState, (state: AuthState): Array => state?.config?.enabled_claim ?? []);\r\n","import { createSelector } from '@ngrx/store';\r\nimport { LayoutMode } from 'src/app/models/core/layout-mode.type';\r\nimport { SystemNotification } from 'src/app/models/core/system-notification.type';\r\nimport { Theme } from 'src/app/models/core/theme.type';\r\nimport { AppState } from '../states/app.state';\r\nimport { SystemState } from '../states/system.state';\r\nimport { LanguageOption } from 'src/app/models/core/language-option.type';\r\n\r\nconst systemState = (state: AppState): SystemState => state.system;\r\nexport const selectCurrentLang = createSelector(systemState, (state: SystemState): LanguageOption => state.currentLang);\r\nexport const selectLayoutMode = createSelector(systemState, (state: SystemState): LayoutMode => state.layoutMode);\r\nexport const selectLoading = createSelector(systemState, (state: SystemState): boolean => state.loading);\r\nexport const selectNotification = createSelector(systemState, (state: SystemState): SystemNotification | undefined => state.notification);\r\nexport const selectTheme = createSelector(systemState, (state: SystemState): Theme => state.theme);\r\n","import { GLOBAL_CONFIG } from 'src/app/configs/global.config';\r\n\r\nexport const environment = {\r\n production: false,\r\n api_url: 'https://gw.cube.rina.org/diassteeldecarbon-func/test',\r\n admin_tool_url: 'https://gw.cube.rina.org/admin-tool',\r\n ...GLOBAL_CONFIG,\r\n powerbi: {\r\n groupId: 'd4092f74-b6c3-4e5a-8d83-7d22f026f83c',\r\n reportId: '781d95eb-c659-46e4-ad7d-f2bed5cc44a9',\r\n },\r\n b2cPolicies: {\r\n clientId: '33e5456b-20ca-4cf6-b504-2a82fc74bf6d',\r\n tenantId: 'ab37f843-3ed8-42e4-b104-6929068b10db',\r\n redirectUri: 'https://co2neutral-test.cube.rina.org',\r\n redirectCourtesyPageUri: 'https://www.rina.org/',\r\n postLogoutRedirectUri: 'https://www.rina.org/',\r\n tenant : 'rinagroupb2c',\r\n names: {\r\n signUpSignIn: 'B2C_1A_SIGNUP_SIGNIN',\r\n resetPassword: 'B2C_1A_PASSWORDRESET',\r\n },\r\n authorities: {\r\n signUpSignIn: {\r\n authority: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN',\r\n },\r\n resetPassword: {\r\n authority: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/B2C_1A_PASSWORDRESET',\r\n },\r\n editProfile: {\r\n authority: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/B2C_1A_PROFILEEDIT',\r\n },\r\n },\r\n domain: 'https://login.rina.org/',\r\n subdomain: 'rinagroupb2c.onmicrosoft.com',\r\n authorityDomain: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com',\r\n },\r\n localStorageKeyPrefix: 'cube-mt-test',\r\n};\r\n","import { bootstrapApplication } from '@angular/platform-browser';\r\nimport { AppComponent } from './app/app.component';\r\nimport { appConfig } from './app/app.config';\r\n\r\nbootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));\r\n"],"names":["ADB2CClient","executeFlow","parseFragment","ADB2C","HASH_KEY_ADT_TOKEN","HASH_KEY_B2C_ID_TOKEN","CubeAuth","adtTokenEnabled","adb2cEnabled","adb2cClient","undefined","adb2cRedirectUri","adb2cCurrentIdToken","logoutRedirectUri","credentialsReadyFlag","onCredentialsReadyCallbacks","onADB2CNewTokenCallbacks","enableAdTTokens","enableADB2C","tenantId","clientId","policy","redirectUri","setLogutRedirectUri","uri","onCredentialsReady","f","push","onADB2CNewToken","_credentialsReady","authType","authToken","console","debug","callback","_ADB2CNewToken","idToken","expires","profileInfo","auth","q","bind","Error","logout","_this","_asyncToGenerator","redirectUrl","persistence","clear","getLogoutUrl","location","href","PKCE","constructor","verifier","getCodeVerifier","getPlainCodeChallenge","getCodeChallenge","msgBuffer","TextEncoder","encode","hashBuffer","crypto","subtle","digest","base64URLEncode","arraybufferToString","build","buildVerifier","length","Math","floor","random","array","Uint8Array","randomBytes","window","getRandomValues","randomSymbols","toString","slice","str","btoa","replace","u8array","t","output","i","eval","verify","challenge","method","_this2","getKeys","_this3","obj","pkce","e","warn","mergeQuery","query","key","Object","keys","encodeURIComponent","tenant","baseUrl","authAPI","tokenAPI","id_token","post_logout_redirect_uri","id_token_hint","getLoginUrl","options","client_id","redirect_uri","code_challenge","codeChallenge","code_challenge_method","codeChallengeMethod","response_type","responseType","response_mode","responseMode","scope","state","getTokenInfoByRefreshToken","refreshToken","_this4","r","fetch","headers","body","grant_type","refresh_token","json","getTokenInfoByCode","code","codeVerifier","_this5","code_verifier","ADB2C_STATE_KEY","p","document","hash","split","_x","_x2","_x3","_executeFlow","apply","arguments","client","fragment","token","getRefreshToken","error","log","Date","now","info","processTokensInfo","stateId","randomUUID","sessionStorage","setItem","JSON","stringify","url","parse","getItem","removeItem","_x4","_x5","_x6","_processTokensInfo","not_before","id_token_expires_in","saveRefreshToken","setTimeout","_ref","_x7","_x8","_x9","atob","localStorage","DiasBaseEffects","handleError","factory","ɵfac","HttpParams","environment","DiasHttpService","http","get","path","params","api_url","post","data","put","delete","i0","ɵɵinject","i1","HttpClient","inject","takeUntilDestroyed","CommonModule","RouterOutlet","Store","filter","map","selectTheme","CubeLayoutModeHandlerDirective","NotificationHandlerDirective","CubeTranslateDirective","TokenService","AuthActions","AuthenticationService","concatLatestFrom","selectTokenDetails","selectUserTenants","jwtDecode","AppComponent","authService","store","tokenService","isDarkTheme","themeClass","dispatch","login","pipe","subscribe","uniqueId","getUniqueId","setTokenDetails","tokenDetails","select","theme","next","isDark","newThemeClass","bodyElement","classList","remove","add","tenants","getUserTenants","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","AppComponent_Template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","styles","LOCALE_ID","importProvidersFrom","registerLocaleData","provideHttpClient","withInterceptorsFromDi","localeIt","provideRouter","withComponentInputBinding","withViewTransitions","provideAnimations","provideStore","provideStoreDevtools","provideEffects","TranslateModule","ROOT_INTERCEPTORS","ROUTES","translate","ClientHttpService","appConfig","providers","reducers","metaReducers","devtoolsConfig","effects","forRoot","config","provide","useValue","HTTP_INTERCEPTORS","AzureTokenInterceptor","LoadingInterceptor","MetadataInterceptor","NotificationInterceptor","useClass","multi","redirectTo","pathMatch","loadChildren","canActivate","solution","version","snackbar_config","snackbar_duration","snackbar_error_duration","bypass_auth_token_resources","GLOBAL_CONFIG","MissingTranslationHandler","TranslateLoader","TranslateHttpLoader","CubeMissingTranslationHandler","handle","interpolateParams","missing","httpTranslateLoader","defaultLanguage","loader","useFactory","deps","isolate","missingTranslationHandler","locales","label","BreakpointObserver","delay","SystemActions","breakpointObserver","observe","res","matches","isResponsive","layoutMode","setLayoutMode","NavigationEnd","MessageType","selectNotification","MatSnackBarConfig","router","snackbar","notification","openNotificationSnackbar","events","event","setNotification","dismiss","type","message","snackBarConfig","open","panelClass","Info","duration","ɵɵdirectiveInject","i2","Router","i3","MatSnackBar","selectCurrentLang","selectAdditionalLanguages","translateService","browserLang","getBrowserLang","currentLang","setCurrentLang","language","use","additional_languages","includes","TranslateService","_get","_post","_put","getClientConfig","switchMap","intercept","req","appendToken","resourceNeedsToken","clonedReq","clone","setHeaders","Authorization","finalize","counter","startLoading","stopLoading","active_tenant","localStorageKeyPrefix","excludedResources","some","append","HttpStatusCode","catchError","tap","throwError","response","status","NotFound","statusText","error_message","TruncateFileUrlPipe","transform","value","at","pure","BehaviorSubject","profile","admin_tool_url","roles","role","b2cPolicies","names","signUpSignIn","postLogoutRedirectUri","name","checkAndSetActiveAccount","request_url","every","resource","cloneRequest","append_token","providedIn","FileService","retrieveUrlSASToken","appendAll","downloadZIP","id","downloadFromUrl","handleDownload","link","createElement","URL","createObjectURL","download","getFilename","click","truncate_pipe","filename","decodeToken","decodedToken","oid","sub","createActionGroup","emptyProps","props","source","RedirectToGateway","Login","LoginSuccess","setActiveAccount","GetUserTenants","GetUserTenantsSuccess","GetUserTenantsFailure","GetUserRoles","GetUserRolesSuccess","GetUserRolesFailure","GetUserFeatures","GetUserFeaturesSuccess","GetClientConfig","GetClientConfigSuccess","GetClientConfigFailure","GetUserFeaturesFailure","setActiveRole","setActiveTenant","FileActions","RetrieveSASTokenUrl","RetrieveSASTokenUrlSuccess","RetrieveSASTokenUrlFailure","RetrieveZIPUrl","RetrieveZIPUrlSuccess","RetrieveZIPUrlFailure","DownloadFromUrl","DownloadFromUrlSuccess","DownloadFromUrlFailure","OpenPage","Redirect","RedirectToCourtesyPage","RedirectToHomePage","SetCurrentLang","SetLayoutMode","SetNotification","SetTheme","ChangeTheme","StartLoading","StopLoading","Actions","createEffect","ofType","of","selectActiveTenant","AuthEffects","clientHttpService","actions$","redirectToGateway$","redirectToGateway","changeActiveTenant$","getUserRoles","changeActiveRole$","active_role","getUserFeatures","userTenants$","current_tenant","getUserTenantsSuccess","redirectToCourtesyPage","getUserTenantsFailure","userTenantsFailed$","getUserRolesFailure","userRoles$","getUserRolesSuccess","userRolesSuccess$","userFeatures$","getUserFeaturesSuccess","getUserFeaturesFailure","getUserFeatureSuccess$","getClientConfig$","getClientConfigSuccess","getClientConfigFailure","setActiveAccount$","login$","logout$","FileEffects","fileService","retrieveFileSASToken$","retrieveSASTokenUrl","retrieveSASTokenUrlSuccess","retrieveSASTokenUrlFailure","retrieveZIPUrl$","retrieveZIPUrl","retrieveZIPUrlSuccess","retrieveZIPUrlFailure","urlToFileDownload$","downloadFromUrl$","downloadFromUrlSuccess","downloadFromUrlFailure","downloadFromUrlSuccess$","SystemEffects","actions","redirect$","redirect","extras","navigateByUrl","redirectToCourtesyPage$","redirectCourtesyPageUri","redirectToHomePage$","redirectToHomePage","openPage$","openPage","target","localStorageSync","authReducers","systemReducers","system","runtimeChecks","strictActionImmutability","strictActionSerializability","strictActionWithinNgZone","strictStateImmutability","strictStateSerializability","strictActionTypeUniqueness","maxAge","logOnly","production","localStorageSyncReducer","reducer","localStorageConfig","rehydrate","storageKeySerializer","createReducer","on","INIT_STATE","user","find","given_name","enabled_lang","enabled_claim","loading","setTheme","changeTheme","createSelector","authState","selectUserDetails","Array","selectClientClaims","systemState","selectLayoutMode","selectLoading","powerbi","groupId","reportId","resetPassword","authorities","authority","editProfile","domain","subdomain","authorityDomain","bootstrapApplication","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}