{"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.dev.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).replace(/\\+/g, '-').replace(/\\//g, '_').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://test-login.rina.org/rinagroupb2cdevl.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\nconst ADB2C_STATE_KEY = 'AADState';\r\n\r\nexport function parseFragment() {\r\n /**\r\n * TODOs\r\n * - handle multi parameters and objects\r\n * - accept string 'query' as argument\r\n */\r\n var t,\r\n q = {};\r\n for (var p of document.location.hash.slice(1).split('&')) {\r\n t = p.split('=');\r\n q[t[0]] = t[1];\r\n }\r\n return q;\r\n}\r\n\r\nexport async function executeFlow(client, redirectUri, callback) {\r\n const fragment = parseFragment();\r\n const token = await ADB2C.persistence.getRefreshToken();\r\n\r\n if ('error' in fragment) {\r\n console.error(fragment['error']);\r\n console.log(fragment);\r\n // TODO: raise exception ?\r\n } else if (token != null && Date.now() < token.expires) {\r\n // Using refresh token\r\n console.log(\"'Refresh token' found in storage. Retrieving tokens information by 'refresh token'.\");\r\n var info = await client.getTokenInfoByRefreshToken(token.refreshToken);\r\n await processTokensInfo(info, client, callback);\r\n } else if (!('code' in fragment)) {\r\n // Redirect to login page\r\n console.log(\"'Code' not found in fragment. Redirecting to login page.\");\r\n // Generates PKCE keys\r\n const pkce = await PKCE.getKeys();\r\n // Saves the application state\r\n const stateId = crypto.randomUUID();\r\n const state = {\r\n codeVerifier: pkce.codeVerifier,\r\n };\r\n sessionStorage.setItem(stateId, JSON.stringify(state));\r\n // Generates login URL\r\n var url = client.getLoginUrl(redirectUri, pkce, {\r\n state: stateId,\r\n response_type: 'code',\r\n response_mode: 'fragment',\r\n scope: 'openid',\r\n });\r\n // Redirects\r\n location.href = url;\r\n } else {\r\n // Using code\r\n console.log(\"'Code' found in fragment. Retrieving token information by 'code'.\");\r\n // Retrieves state information\r\n var state = JSON.parse(sessionStorage.getItem(fragment.state));\r\n // Gets tokens information\r\n var info = await client.getTokenInfoByCode(fragment.code, state.codeVerifier);\r\n // Clears state information\r\n sessionStorage.removeItem(fragment.state);\r\n // Clears URL fragment\r\n location.hash = '#';\r\n await processTokensInfo(info, client, callback);\r\n }\r\n}\r\n\r\nasync function processTokensInfo(info, client, callback) {\r\n if ('error' in info) {\r\n console.error(\"Unable to process token info. Token won't be refreshed.\");\r\n console.error(info);\r\n } else {\r\n // Calculates token expiration\r\n var expires = 1000 * (info.not_before + info.id_token_expires_in);\r\n console.log('Access token expires at ', expires);\r\n console.log('Access token expires in ', expires - Date.now());\r\n // Stores the refresh token\r\n await ADB2C.persistence.saveRefreshToken(info.refresh_token, expires);\r\n // Set timeout to refresh the id_token one minute before it expires\r\n window.setTimeout(\r\n async (client, refreshToken, callback) => {\r\n processTokensInfo(await client.getTokenInfoByRefreshToken(refreshToken), client, callback);\r\n },\r\n expires - Date.now() - 60000,\r\n client,\r\n info.refresh_token,\r\n callback\r\n );\r\n // Callback\r\n callback(info.id_token, expires, JSON.parse(atob(info['profile_info'])));\r\n }\r\n}\r\n\r\nexport const ADB2C = {\r\n persistence: {\r\n async getRefreshToken() {\r\n try {\r\n return JSON.parse(localStorage.getItem(ADB2C_STATE_KEY));\r\n } catch (e) {\r\n console.debug('[AAD B2C] Refresh token not found in storage.');\r\n return null;\r\n }\r\n },\r\n\r\n async saveRefreshToken(refreshToken, expires) {\r\n localStorage.setItem(\r\n ADB2C_STATE_KEY,\r\n JSON.stringify({\r\n refreshToken: refreshToken,\r\n expires: expires,\r\n })\r\n );\r\n },\r\n\r\n async clear() {\r\n localStorage.removeItem(ADB2C_STATE_KEY);\r\n },\r\n },\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: [CommonModule, RouterOutlet, NotificationHandlerDirective, CubeTranslateDirective, CubeLayoutModeHandlerDirective],\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(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\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 {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpResponse,\r\n HttpStatusCode,\r\n} 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, attachments_key?: string): Observable> {\r\n let appendElements: any = { id, resource };\r\n if (attachments_key) appendElements = { ...appendElements, attachments_key };\r\n const params: HttpParams = new HttpParams().appendAll(appendElements);\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","import { 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 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}\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; attachments_key?: 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';\r\nimport { concatLatestFrom } from '@ngrx/operators';\r\n\r\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 { dispatch: false }\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, attachments_key }) =>\r\n this.fileService.downloadZIP(id, resource, attachments_key).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(\r\n authState,\r\n (state: AuthState): Array => state?.config?.enabled_lang ?? []\r\n);\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-dev.cube.rina.org/diassteeldecarbon-func/dev',\r\n admin_tool_url: 'https://gw-dev.cube.rina.org/admin-tool',\r\n ...GLOBAL_CONFIG,\r\n powerbi: {\r\n groupId: 'd4092f74-b6c3-4e5a-8d83-7d22f026f83c',\r\n reportId: '0042838f-af9c-410f-9c3c-937457353734',\r\n },\r\n b2cPolicies: {\r\n clientId: 'c488675b-76ef-4156-9445-168f6b7287c5',\r\n tenantId: 'c7788286-49f4-40db-bf26-fc1c677df787',\r\n redirectUri: 'https://co2neutral-dev.cube.rina.org',\r\n redirectCourtesyPageUri: 'https://www.rina.org/',\r\n postLogoutRedirectUri: 'https://www.rina.org/',\r\n tenant: 'rinagroupb2cdevl',\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://test-login.rina.org/rinagroupb2cdevl.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN',\r\n },\r\n resetPassword: {\r\n authority: 'https://test-login.rina.org/rinagroupb2cdevl.onmicrosoft.com/B2C_1A_PASSWORDRESET',\r\n },\r\n editProfile: {\r\n authority: 'https://test-login.rina.org/rinagroupb2cdevl.onmicrosoft.com/B2C_1A_PROFILEEDIT',\r\n },\r\n },\r\n domain: 'https://test-login.rina.org/',\r\n subdomain: 'rinagroupb2cdevl.onmicrosoft.com',\r\n authorityDomain: 'https://test-login.rina.org/rinagroupb2cdevl.onmicrosoft.com',\r\n },\r\n localStorageKeyPrefix: 'cube-mt-dev',\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","attachments_key","appendElements","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":[]}