{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/module_b2c_login/CubeAuth.js","./src/app/module_b2c_login/adB2c.js","./src/app/module_b2c_login/azuread.js","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.config.ts","./src/app/app.routes.ts","./src/app/components/ui-elements/loading-spinner/loading-spinner.component.ts","./src/app/configs/powerbi.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/powerbi/providers/powerbi-http.service.ts","./src/app/features/powerbi/store/index.ts","./src/app/features/powerbi/store/powerbi.actions.ts","./src/app/features/powerbi/store/powerbi.effects.ts","./src/app/features/powerbi/store/powerbi.reducers.ts","./src/app/models/core/system-notification.interface.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/interceptors/powerbi-token.interceptor.ts","./src/app/providers/services/authentication.service.ts","./src/app/providers/services/token.service.ts","./src/app/store/actions/auth.actions.ts","./src/app/store/actions/system.actions.ts","./src/app/store/effects/auth.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/environments/global.ts","./src/main.ts"],"sourcesContent":["import { ADB2CClient } from './adB2c.js';\nimport { executeFlow, parseFragment, ADB2C } from './azuread.js';\n\nconst HASH_KEY_ADT_TOKEN = 'token';\nconst HASH_KEY_B2C_ID_TOKEN = 'id_token';\n\nexport const CubeAuth = {\n adtTokenEnabled: false,\n\n adb2cEnabled: false,\n adb2cClient: undefined,\n adb2cRedirectUri: undefined,\n\n adb2cCurrentIdToken: undefined,\n\n logoutRedirectUri: '',\n\n credentialsReadyFlag: true,\n\n onCredentialsReadyCallbacks: [],\n onADB2CNewTokenCallbacks: [],\n\n enableAdTTokens() {\n this.adtTokenEnabled = true;\n },\n\n enableADB2C(tenantId, clientId, policy, redirectUri, baseUrl) {\n this.adb2cEnabled = true;\n this.adb2cClient = new ADB2CClient(tenantId, clientId, policy, baseUrl);\n this.adb2cRedirectUri = redirectUri;\n },\n\n setLogutRedirectUri(uri) {\n this.logoutRedirectUri = uri;\n },\n\n set onCredentialsReady(f) {\n this.onCredentialsReadyCallbacks.push(f);\n },\n\n set onADB2CNewToken(f) {\n this.onADB2CNewTokenCallbacks.push(f);\n },\n\n _credentialsReady(authType, authToken) {\n console.debug('[CUBE AUTH] Credentials are ready.');\n if (this.credentialsReadyFlag === true) {\n this.credentialsReadyFlag = false;\n for (var callback of this.onCredentialsReadyCallbacks) callback(authType, authToken);\n }\n },\n\n _ADB2CNewToken(idToken, expires, profileInfo) {\n console.debug('[CUBE AUTH] New token available for AD B2C');\n this.adb2cCurrentIdToken = idToken;\n if (this.credentialsReadyFlag === true) this._credentialsReady('Bearer', idToken);\n for (var callback of this.onADB2CNewTokenCallbacks) callback(idToken, expires, profileInfo);\n },\n\n auth() {\n const q = parseFragment();\n\n if (this.adtTokenEnabled === true && HASH_KEY_ADT_TOKEN in q) {\n this._credentialsReady('Basic', q[HASH_KEY_ADT_TOKEN]);\n } else if (this.adb2cEnabled === true) {\n // Authentication flow\n executeFlow(this.adb2cClient, this.adb2cRedirectUri, CubeAuth._ADB2CNewToken.bind(this));\n } else throw new Error('No way to authenticate the user.');\n },\n\n async logout() {\n var redirectUrl = this.logoutRedirectUri;\n if (this.adb2cCurrentIdToken != undefined) {\n await ADB2C.persistence.clear();\n redirectUrl = this.adb2cClient.getLogoutUrl(this.adb2cCurrentIdToken, redirectUrl);\n }\n location.href = redirectUrl;\n }\n};\n","/**\n * This module handles the integration with Azure AD B2C.\n *\n */\n\nexport class PKCE {\n /**\n * Proof Key for Code Exchange by OAuth Public Clients\n * https://datatracker.ietf.org/doc/html/rfc7636\n */\n\n // METHOD_PLAIN = 'plain';\n // METHOD_SHA = 'S256';\n\n constructor(verifier) {\n this.verifier = verifier;\n }\n\n getCodeVerifier() {\n return this.verifier;\n }\n\n getPlainCodeChallenge() {\n return this.verifier;\n }\n\n async getCodeChallenge() {\n const msgBuffer = new TextEncoder().encode(this.verifier);\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n return PKCE.base64URLEncode(PKCE.arraybufferToString(hashBuffer));\n }\n\n static build() {\n return new this(this.buildVerifier());\n }\n\n static buildVerifier() {\n const length = 43 + Math.floor(Math.random() * (1 + 128 - 43));\n const array = new Uint8Array(30);\n const randomBytes = window.crypto.getRandomValues(array);\n const randomSymbols = this.base64URLEncode(randomBytes.toString());\n return randomSymbols.slice(0, length);\n }\n\n static base64URLEncode(str) {\n return btoa(str)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n }\n\n static arraybufferToString(array) {\n const u8array = new Uint8Array(array);\n var t,\n output = '';\n for (var i of u8array) {\n t = i.toString(16);\n if (t.length < 2) t = '0' + t;\n output += '\\\\x' + t;\n }\n return eval(\"'\" + output + \"'\");\n }\n\n static async verify(verifier, challenge, method) {\n if (method == \"plain\") return verifier == challenge;\n else return (await new this(verifier).getCodeChallenge()) == challenge;\n }\n\n static async getKeys() {\n var obj = {},\n pkce = this.build();\n obj['codeVerifier'] = pkce.getCodeVerifier();\n try {\n obj['codeChallengeMethod'] = 'S256';\n obj['codeChallenge'] = await pkce.getCodeChallenge();\n } catch (e) {\n console.warn(\"[PKCE] Using 'plain' method.\");\n obj['codeChallengeMethod'] = \"plain\";\n obj['codeChallenge'] = pkce.getPlainCodeChallenge();\n } finally {\n return obj;\n }\n }\n}\n\nfunction mergeQuery(obj) {\n var query = '';\n for (var key of Object.keys(obj)) {\n query += key + '=' + encodeURIComponent(obj[key]) + '&';\n }\n return query;\n}\n\nexport class ADB2CClient {\n constructor(tenant, clientId, policy, baseUrl) {\n this.tenant = tenant;\n this.clientId = clientId;\n this.policy = policy;\n this.baseUrl = baseUrl;\n this.authAPI = this.baseUrl + 'authorize';\n this.tokenAPI = this.baseUrl + 'token';\n }\n\n getLogoutUrl(id_token, redirectUri) {\n return (\n this.baseUrl +\n 'logout?' +\n mergeQuery({\n post_logout_redirect_uri: redirectUri,\n id_token_hint: id_token\n })\n );\n }\n\n getLoginUrl(redirectUri, pkce, options) {\n return (\n this.authAPI +\n '?' +\n mergeQuery({\n client_id: this.clientId,\n redirect_uri: redirectUri,\n code_challenge: pkce.codeChallenge,\n code_challenge_method: pkce.codeChallengeMethod,\n response_type: options.responseType || 'code',\n response_mode: options.responseMode || 'fragment',\n scope: options.scope || 'openid',\n state: options.state\n })\n );\n }\n\n async getTokenInfoByRefreshToken(refreshToken) {\n var r = await fetch(this.tokenAPI, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n body: mergeQuery({\n client_id: this.clientId,\n scope: 'openid offline_access profile',\n grant_type: 'refresh_token',\n refresh_token: refreshToken\n })\n });\n return await r.json();\n }\n\n async getTokenInfoByCode(code, codeVerifier) {\n var r = await fetch(this.tokenAPI, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n body: mergeQuery({\n client_id: this.clientId,\n scope: 'openid offline_access profile',\n grant_type: 'authorization_code',\n code: code,\n code_verifier: codeVerifier\n })\n });\n return await r.json();\n }\n}\n","import {PKCE} from \"./adB2c.js\"\n\n\nconst ADB2C_STATE_KEY = \"AADState\"\n\n\nexport function parseFragment() {\n\t/**\n\t * TODOs\n\t * - handle multi parameters and objects\n\t * - accept string 'query' as argument\n\t */\n\tvar t, q = {}; \n\tfor(var p of document.location.hash.slice(1).split(\"&\")){\n\t\tt = p.split(\"=\")\n\t\tq[t[0]] = t[1]\n\t}\n\treturn q\n}\n\n\nexport async function executeFlow(client, redirectUri, callback) {\n\n\tconst fragment = parseFragment()\n\tconst token = await ADB2C.persistence.getRefreshToken()\n\n\tif( \"error\" in fragment) {\n\n\t\tconsole.error(fragment[\"error\"])\n\t\tconsole.log(fragment)\n\t\t// TODO: raise exception ?\n\n\t}\n\telse if(token != null && Date.now() < token.expires) {\n\n\t\t// Using refresh token\n\t\tconsole.log(\"'Refresh token' found in storage. Retrieving tokens information by 'refresh token'.\")\n\t\tvar info = await client.getTokenInfoByRefreshToken(token.refreshToken)\n\t\tawait processTokensInfo(info, client, callback)\n\n\t}\n\telse if(!(\"code\" in fragment)) {\n\n\t\t// Redirect to login page\n\t\tconsole.log(\"'Code' not found in fragment. Redirecting to login page.\")\n\t\t// Generates PKCE keys\n\t\tconst pkce = await PKCE.getKeys()\n\t\t// Saves the application state\n\t\tconst stateId = crypto.randomUUID()\n\t\tconst state = {\n\t\t\tcodeVerifier: pkce.codeVerifier\n\t\t}\n\t\tsessionStorage.setItem(stateId, JSON.stringify(state))\n\t\t// Generates login URL\n\t\tvar url = client.getLoginUrl(redirectUri, pkce, {\n\t\t\tstate: stateId,\n\t\t\tresponse_type: \"code\",\n\t\t\tresponse_mode: \"fragment\",\n\t\t\tscope: \"openid\"\n\t\t})\n\t\t// Redirects\n\t\tlocation.href = url\n\n\t}\n\telse {\n\n\t\t// Using code\n\t\tconsole.log(\"'Code' found in fragment. Retrieving token information by 'code'.\")\n\t\t// Retrieves state information\n\t\tvar state = JSON.parse(sessionStorage.getItem(fragment.state))\n\t\t// Gets tokens information\n\t\tvar info = await client.getTokenInfoByCode(fragment.code, state.codeVerifier)\n\t\t// Clears state information\n\t\tsessionStorage.removeItem(fragment.state)\n\t\t// Clears URL fragment\n\t\tlocation.hash = \"#\"\n\t\tawait processTokensInfo(info, client, callback)\n\n\t}\n\n}\n\n\nasync function processTokensInfo(info, client, callback) {\n\tif(\"error\" in info) {\n\t\tconsole.error(\"Unable to process token info. Token won't be refreshed.\")\n\t\tconsole.error(info)\n\t}\n\telse {\n\t\t// Calculates token expiration\n\t\tvar expires = 1000 * (info.not_before + info.id_token_expires_in)\n\t\tconsole.log(\"Access token expires at \", expires)\n\t\tconsole.log(\"Access token expires in \", expires - Date.now())\n\t\t// Stores the refresh token\n\t\tawait ADB2C.persistence.saveRefreshToken(info.refresh_token, expires)\n\t\t// Set timeout to refresh the id_token one minute before it expires\n\t\twindow.setTimeout(async (client, refreshToken, callback) => {\n\t\t\tprocessTokensInfo(\n\t\t\t\tawait client.getTokenInfoByRefreshToken(refreshToken),\n\t\t\t\tclient,\n\t\t\t\tcallback\n\t\t\t)\n\t\t}, expires - Date.now() - 60000, client, info.refresh_token, callback)\n\t\t// Callback\n\t\tcallback(info.id_token, expires, JSON.parse(atob(info[\"profile_info\"])))\n\t}\n}\n\n\nexport const ADB2C = {\n\n\tpersistence : {\n\n\t\tasync getRefreshToken() {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(localStorage.getItem(ADB2C_STATE_KEY))\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\tconsole.debug(\"[AAD B2C] Refresh token not found in storage.\")\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\n\t\tasync saveRefreshToken(refreshToken, expires) {\n\t\t\tlocalStorage.setItem(ADB2C_STATE_KEY, JSON.stringify({\n\t\t\t\t\"refreshToken\": refreshToken,\n\t\t\t\t\"expires\": expires\n\t\t\t}))\n\t\t},\n\n\t\tasync clear() {\n\t\t\tlocalStorage.removeItem(ADB2C_STATE_KEY)\n\t\t}\n\n\t}\n\n}","/* eslint-disable @ngrx/avoid-mapping-selectors */\nimport { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterOutlet } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { delay, filter, map, Observable } from 'rxjs';\n\nimport { TokenService } from './providers/services/token.service';\nimport { AuthActions } from './store/actions/auth.actions';\nimport { AuthenticationService } from './providers/services/authentication.service';\nimport { TokenDetails } from './models/auth/token-details.type';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { selectTokenDetails, selectUserTenants } from './store/selectors/auth.selectors';\n\nimport { Theme } from './models/core/theme.type';\nimport { selectLoading, selectTheme } from './store/selectors/system.selectors';\nimport { AppState } from './store/states/app.state';\nimport { LoadingSpinnerComponent } from './components/ui-elements/loading-spinner/loading-spinner.component';\nimport { NotificationHandlerDirective } from './directives/notification-handler.directive';\nimport { CubeTranslateDirective } from './directives/translate.directive';\nimport { CubeLayoutModeHandlerDirective } from './directives/layout-mode-handler.directive';\nimport { OverlayContainer } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'cube-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n standalone: true,\n imports: [CommonModule, RouterOutlet, LoadingSpinnerComponent, NotificationHandlerDirective, CubeTranslateDirective, CubeLayoutModeHandlerDirective],\n})\nexport class AppComponent {\n isDarkTheme = false;\n loading$: Observable;\n\n private readonly authService: AuthenticationService = inject(AuthenticationService);\n private readonly tokenService: TokenService = inject(TokenService);\n\n constructor(private readonly store: Store, private overlayContainer: OverlayContainer) {\n this.store.dispatch(AuthActions.login());\n\n this.authService.token.pipe(\n filter((token: string | undefined): token is string => !!token)).subscribe(token => {\n const uniqueId = this.tokenService.getUniqueId(token);\n this.store.dispatch(AuthActions.setTokenDetails({tokenDetails: {idToken: token, uniqueId} as TokenDetails}))})\n\n this.loading$ = this.store.select(selectLoading).pipe(delay(500));\n\n this.store\n .select(selectTheme)\n .pipe(\n map((theme: Theme): boolean => theme === 'dark'),\n takeUntilDestroyed()\n )\n .subscribe({\n next: (isDark: boolean) => {\n this.isDarkTheme = isDark;\n\n this.overlayContainer.getContainerElement().classList.remove(isDark ? 'light-theme' : 'dark-theme');\n this.overlayContainer.getContainerElement().classList.add(!isDark ? 'light-theme' : 'dark-theme');\n },\n });\n\n this.store\n .select(selectTokenDetails)\n .pipe(\n filter((tokenDetails: TokenDetails | undefined): tokenDetails is TokenDetails => !!tokenDetails),\n concatLatestFrom(() => this.store.select(selectUserTenants)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: ([tokenDetails, tenants]) => {\n if (!tenants.length) {\n this.store.dispatch(AuthActions.getUserTenants({ uniqueId: tokenDetails.uniqueId }));\n }\n },\n });\n }\n}\n","
\n \n
\n\n\n","import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { ApplicationConfig, importProvidersFrom, LOCALE_ID } from '@angular/core';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport { provideRouter, withComponentInputBinding } from '@angular/router';\nimport { provideEffects } from '@ngrx/effects';\nimport { provideStore } from '@ngrx/store';\nimport { provideStoreDevtools } from '@ngrx/store-devtools';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { ROUTES } from './app.routes';\nimport { AzureTokenInterceptor } from './providers/interceptors/azure-token.interceptor';\nimport { LoadingInterceptor } from './providers/interceptors/loading.interceptor';\nimport { MetadataInterceptor } from './providers/interceptors/metadata.interceptor';\nimport { NotificationInterceptor } from './providers/interceptors/notification.interceptor';\nimport { PowerBITokenInterceptor } from './providers/interceptors/powerbi-token.interceptor';\n\nimport * as translate from './configs/translate.config';\nimport * as store from './store';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideHttpClient(withInterceptorsFromDi()),\n provideRouter(ROUTES, withComponentInputBinding()),\n provideStore(store.reducers, { metaReducers: store.metaReducers }),\n provideStoreDevtools(store.devtoolsConfig),\n provideEffects(store.effects),\n provideAnimations(),\n importProvidersFrom(TranslateModule.forRoot(translate.config)),\n { provide: LOCALE_ID, useValue: 'it' },\n { provide: HTTP_INTERCEPTORS, useClass: AzureTokenInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: MetadataInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: PowerBITokenInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: NotificationInterceptor, multi: true }\n ],\n};\n","import { Routes } from '@angular/router';\n\nexport const ROUTES: Routes = [\n { path: '', redirectTo: 'home', pathMatch: 'full' },\n { path: 'home', loadChildren: () => import('./features/home/home.module'), canActivate: [] },\n { path: 'error', loadChildren: () => import('./features/error/error-routing.module').then((routes) => routes.ErrorRoutes) },\n { path: '**', redirectTo: 'home' },\n];\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'cube-loading-spinner',\n standalone: true,\n imports: [CommonModule, MatProgressSpinnerModule],\n template: `\n \n \n `,\n styleUrls: ['./loading-spinner.component.scss'],\n})\nexport class LoadingSpinnerComponent {}\n","export const POWERBI_CONFIG = {\n groupId: 'add-your-powerbi-group-id-here',\n reportId: 'add-your-powerbi-report-id-here',\n};\n","import { HttpClient } from '@angular/common/http';\nimport { MissingTranslationHandler, MissingTranslationHandlerParams, TranslateLoader, TranslateModuleConfig } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\nexport class CubeMissingTranslationHandler implements MissingTranslationHandler {\n handle(params: MissingTranslationHandlerParams): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (params.interpolateParams as any)?.missing || 'Missing translation';\n }\n}\n\nexport function httpTranslateLoader(http: HttpClient) {\n return new TranslateHttpLoader(http, './assets/i18n/', '.json');\n}\n\nexport const config: TranslateModuleConfig = {\n defaultLanguage: 'en',\n loader: {\n provide: TranslateLoader,\n useFactory: httpTranslateLoader,\n deps: [HttpClient],\n },\n isolate: false,\n missingTranslationHandler: { provide: MissingTranslationHandler, useClass: CubeMissingTranslationHandler },\n};\n\nexport const locales: Array<{ code: string; label: string }> = [\n { code: 'it', label: 'Italiano' },\n { code: 'en', label: 'English' },\n];\n","/* eslint-disable @ngrx/no-typed-global-store */\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Store } from '@ngrx/store';\nimport { delay, map } from 'rxjs';\n\nimport { SystemActions } from '../store/actions/system.actions';\nimport { AppState } from '../store/states/app.state';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[cubeLayoutModeHandler]', standalone: true })\nexport class CubeLayoutModeHandlerDirective {\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly store: Store = inject(Store);\n\n constructor() {\n this.breakpointObserver\n .observe(['(max-width: 575.98px)'])\n .pipe(\n delay(1),\n map((res) => res.matches),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: (isResponsive: boolean): void => {\n const layoutMode = isResponsive ? 'responsive' : 'desktop';\n this.store.dispatch(SystemActions.setLayoutMode({ layoutMode }));\n },\n });\n }\n}\n","/* eslint-disable @ngrx/no-typed-global-store */\nimport { Directive } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs';\n\nimport { AppState } from '../store/states/app.state';\nimport { selectNotifications } from '../store/selectors/system.selectors';\nimport { SystemActions } from '../store/actions/system.actions';\nimport { SystemNotification, MessageType } from '../models/core/system-notification.interface';\n\n@Directive({ selector: '[cubeNotificationHandler]', standalone: true })\nexport class NotificationHandlerDirective {\n constructor(private readonly store: Store, private readonly router: Router, private readonly snackbar: MatSnackBar) {\n this.store\n .select(selectNotifications)\n .pipe(\n filter((notification: SystemNotification | undefined): notification is SystemNotification => !!notification),\n takeUntilDestroyed()\n )\n .subscribe({\n next: (notification: SystemNotification) => this.openNotificationSnackbar(notification),\n });\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntilDestroyed()\n )\n .subscribe({\n next: () => {\n this.store.dispatch(SystemActions.setNotification({ notification: undefined }));\n this.snackbar.dismiss();\n },\n });\n }\n\n private openNotificationSnackbar({ type, message }: SystemNotification): void {\n const snackBarConfig = this.snackBarConfig(type);\n this.snackbar.open(typeof message === 'string' ? message : 'An error has occurred', 'close', snackBarConfig);\n }\n\n private snackBarConfig(type: MessageType): MatSnackBarConfig {\n const snackBarConfig = new MatSnackBarConfig();\n const panelClass = ['snackBarMessage'];\n\n const snackbar_config = {\n snackbar_duration: 2500,\n snackbar_error_duration: 5000,\n };\n\n switch (type) {\n case MessageType.Info:\n snackBarConfig.duration = snackbar_config.snackbar_duration;\n snackBarConfig.panelClass = [...panelClass, 'infoMessage'];\n break;\n case MessageType.Error:\n snackBarConfig.duration = snackbar_config.snackbar_error_duration;\n snackBarConfig.panelClass = [...panelClass, 'errorMessage'];\n break;\n }\n\n return snackBarConfig;\n }\n}\n","/* eslint-disable @ngrx/no-typed-global-store */\nimport { Directive } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Store } from '@ngrx/store';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { SystemActions } from '../store/actions/system.actions';\nimport { LanguageOption } from '../models/core/language-option.type';\nimport { selectCurrentLang } from '../store/selectors/system.selectors';\nimport { AppState } from '../store/states/app.state';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[cubeTranslate]', standalone: true })\nexport class CubeTranslateDirective {\n constructor(\n private readonly translateService: TranslateService,\n private readonly store: Store,\n ) {\n const browserLang = this.translateService.getBrowserLang();\n const currentLang: LanguageOption = browserLang === 'it' ? 'it' : 'en';\n this.store.dispatch(SystemActions.setCurrentLang({ currentLang }));\n\n this.store\n .select(selectCurrentLang)\n .pipe(takeUntilDestroyed())\n .subscribe({\n next: (language: LanguageOption) => this.translateService.use(language),\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { MSAccessTokenResponse } from '../models/ms-access-token.interface';\nimport { PowerBITokenResponse } from '../models/powerbi-token.interface';\nimport { environment } from 'src/environments/environment';\n\n@Injectable()\nexport class PowerBiHttpService {\n constructor(private readonly http: HttpClient) {}\n\n getMicrosoftAccessToken(): Observable {\n return this.http.get(`https://digitalconsulting-api-dev.azure-api.net/ms-login`);\n }\n\n getPowerBiEmbedToken(): Observable {\n const body = {\n accessLevel: 'View',\n allowSaveAs: 'false',\n };\n\n return this.http.post(\n `https://api.powerbi.com/v1.0/myOrg/groups/${environment.powerbi.groupId}/reports/${environment.powerbi.reportId}/GenerateToken`,\n body,\n );\n }\n}\n","import { createFeature } from '@ngrx/store';\nimport { reducer } from './powerbi.reducers';\nimport { PowerBIEffects } from './powerbi.effects';\nimport { MSAccessTokenResponse } from '../models/ms-access-token.interface';\nimport { PowerBITokenResponse } from '../models/powerbi-token.interface';\nimport { PowerBIConfiguration } from '../models/powerbi-configuration.interface';\n\nexport interface PowerBIState {\n powerbi_access_token: MSAccessTokenResponse | undefined;\n powerbi_embed_token: PowerBITokenResponse | undefined;\n powerbi_embed_configuration: PowerBIConfiguration | undefined;\n}\n\nexport const feature = createFeature({\n name: 'powerbi',\n reducer,\n});\n\nexport { reducer };\n\nexport const effects = [PowerBIEffects];\n\nexport const { selectPowerbi_access_token, selectPowerbi_embed_token, selectPowerbi_embed_configuration } = feature;\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { MSAccessTokenResponse } from '../models/ms-access-token.interface';\nimport { PowerBITokenResponse } from '../models/powerbi-token.interface';\nimport { PowerBIConfiguration } from '../models/powerbi-configuration.interface';\n\nexport const PowerBIActions = createActionGroup({\n source: 'PowerBI',\n events: {\n PowerBIServicePrincipalLogin: emptyProps(),\n PowerBIServicePrincipalLoginSuccess: props<{ response: MSAccessTokenResponse }>(),\n PowerBIServicePrincipalLoginFailure: props<{ error: HttpErrorResponse }>(),\n PowerBIToken: emptyProps(),\n PowerBITokenSuccess: props<{ response: PowerBITokenResponse }>(),\n PowerBITokenFailure: props<{ error: HttpErrorResponse }>(),\n PowerBITokenConfiguration: props<{ configuration: PowerBIConfiguration }>(),\n },\n});\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport * as pbi from 'powerbi-client';\nimport { catchError, map, of, switchMap } from 'rxjs';\n\nimport { PowerBIActions } from './powerbi.actions';\nimport { AppState } from 'src/app/store/states/app.state';\nimport { MSAccessTokenResponse } from '../models/ms-access-token.interface';\nimport { PowerBiHttpService } from '../providers/powerbi-http.service';\nimport { PowerBITokenResponse } from '../models/powerbi-token.interface';\nimport { environment } from 'src/environments/environment';\n\n@Injectable()\nexport class PowerBIEffects {\n constructor(\n private readonly actions$: Actions,\n private readonly httpService: PowerBiHttpService,\n private readonly store: Store,\n ) {}\n\n powerbiLogin$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(PowerBIActions.powerBIServicePrincipalLogin),\n switchMap(() =>\n this.httpService.getMicrosoftAccessToken().pipe(\n map((response: MSAccessTokenResponse) => PowerBIActions.powerBIServicePrincipalLoginSuccess({ response })),\n catchError((error: HttpErrorResponse) => {\n // if (error.status === HttpStatusCode.Forbidden) {\n // return of(PowerBIActions.powerBIServicePrincipalLoginSuccess({ response: true }));\n // } else {\n return of(PowerBIActions.powerBIServicePrincipalLoginFailure({ error }));\n // }\n }),\n ),\n ),\n );\n });\n\n powerbiLoginSuccess$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(PowerBIActions.powerBIServicePrincipalLoginSuccess),\n map(() => PowerBIActions.powerBIToken()),\n );\n });\n\n powerbiToken$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(PowerBIActions.powerBIToken),\n switchMap(() =>\n this.httpService.getPowerBiEmbedToken().pipe(\n map((response: PowerBITokenResponse) => PowerBIActions.powerBITokenSuccess({ response })),\n catchError((error: HttpErrorResponse) => of(PowerBIActions.powerBITokenFailure({ error }))),\n ),\n ),\n );\n });\n\n powerbiTokenResponse$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(PowerBIActions.powerBITokenSuccess),\n map(({ response }) => {\n const configuration = {\n type: 'report',\n tokenType: pbi.models.TokenType.Embed,\n permissions: pbi.models.Permissions.Read,\n embedUrl: `https://app.powerbi.com/reportEmbed?reportId=${environment.powerbi.reportId}&groupId=${environment.powerbi.groupId}&filterPaneEnabled=False`,\n id: environment.powerbi.reportId,\n accessToken: response.token,\n };\n return PowerBIActions.powerBITokenConfiguration({ configuration });\n }),\n );\n });\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PowerBIState } from '.';\nimport { PowerBIActions } from './powerbi.actions';\n\nconst INIT_STATE: PowerBIState = {\n powerbi_access_token: undefined,\n powerbi_embed_token: undefined,\n powerbi_embed_configuration: undefined,\n};\n\nexport const reducer = createReducer(\n INIT_STATE,\n on(PowerBIActions.powerBIServicePrincipalLoginSuccess, (state: PowerBIState, { response }): PowerBIState => ({ ...state, powerbi_access_token: response })),\n on(PowerBIActions.powerBITokenSuccess, (state: PowerBIState, { response }): PowerBIState => ({ ...state, powerbi_embed_token: response })),\n on(PowerBIActions.powerBITokenConfiguration, (state: PowerBIState, { configuration }): PowerBIState => ({ ...state, powerbi_embed_configuration: configuration })),\n);\n","export interface SystemNotification {\n type: MessageType;\n message: string;\n}\n\nexport enum MessageType {\n Info,\n Error,\n}\n","/* eslint-disable @ngrx/no-typed-global-store */\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { filter, map, Observable, switchMap } from 'rxjs';\n\nimport { AuthenticationService } from '../services/authentication.service';\nimport { AppState } from 'src/app/store/states/app.state';\nimport { Store } from '@ngrx/store';\n\n@Injectable()\nexport class AzureTokenInterceptor implements HttpInterceptor {\n readonly authService: AuthenticationService = inject(AuthenticationService);\n readonly #store: Store = inject(Store);\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n return this.authService.token.pipe(\n filter((token: string | undefined): token is string => !!token),\n map((token: string) => ({\n token,\n appendToken: this.authService.resourceNeedsToken(req.url)\n })),\n switchMap(({ token, appendToken }) => {\n const clonedReq =\n token && appendToken\n ? req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n })\n : req;\n\n return next.handle(clonedReq);\n })\n );\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { finalize, Observable } from 'rxjs';\nimport { SystemActions } from 'src/app/store/actions/system.actions';\n\n@Injectable()\nexport class LoadingInterceptor implements HttpInterceptor {\n counter = 0;\n\n constructor(private readonly store: Store) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (!this.counter) {\n this.store.dispatch(SystemActions.startLoading());\n }\n\n this.counter++;\n\n return next.handle(req).pipe(\n finalize(() => {\n this.counter--;\n\n if (!this.counter) {\n this.store.dispatch(SystemActions.stopLoading());\n }\n }),\n );\n }\n}\n","import { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { environment } from '../../../environments/environment';\n\nimport { Observable } from 'rxjs';\n@Injectable()\nexport class MetadataInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const active_tenant = localStorage.getItem(`${environment.localStorageKeyPrefix}_tenant`);\n const excludedResources: Array = ['https://diassteeldecarbonstorage.blob.core.windows.net'];\n let headers: HttpHeaders = req.headers;\n\n if (!excludedResources.some((res) => req.url.includes(res))) {\n headers = req.headers.append('x-solution', environment.solution);\n\n if (active_tenant) {\n headers = headers.append('x-company', active_tenant);\n if (!environment.production && !req.url.includes(environment.admin_tool_url)) {\n const user = JSON.parse(localStorage.getItem(`${environment.localStorageKeyPrefix}_auth`) || '{\"tokenDetails\": {\"account\" : { \"username\" : \"\"}}}');\n const userName = user.tokenDetails?.account?.username ?? 'hussain.sherief@focaloid.com';\n headers = headers.append('x-email', userName);\n headers = headers.append('x-user', userName);\n }\n }\n }\n\n const clonedReq = req.clone({ headers });\n\n return next.handle(clonedReq);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpStatusCode } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { catchError, Observable, throwError } from 'rxjs';\n\nimport { MessageType } from 'src/app/models/core/system-notification.interface';\nimport { SystemActions } from 'src/app/store/actions/system.actions';\n\n@Injectable()\nexport class NotificationInterceptor implements HttpInterceptor {\n constructor(private readonly store: Store) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(req).pipe(\n catchError((response: HttpErrorResponse) => {\n let message = '';\n if (req.url.includes('blob.core.windows.net') && response.status === HttpStatusCode.NotFound) {\n message = response.statusText;\n } else if (req.url.includes('CarbonCreditsHttpTrigger')) {\n message = req.method === 'POST' ? 'Carbon credit creation failed' : 'Carbon credit update failed';\n } else {\n message = response.error.error;\n }\n\n this.store.dispatch(SystemActions.setNotification({ notification: { type: MessageType.Error, message } }));\n return throwError(() => response);\n })\n );\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable, filter, switchMap, take } from 'rxjs';\n\nimport { MSAccessTokenResponse } from 'src/app/features/powerbi/models/ms-access-token.interface';\nimport { feature } from 'src/app/features/powerbi/store';\nimport { AppState } from 'src/app/store/states/app.state';\nimport { environment } from 'src/environments/environment';\n\n@Injectable()\nexport class PowerBITokenInterceptor implements HttpInterceptor {\n constructor(private readonly store: Store) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (req.url.startsWith(environment.powerbi.base_url)) {\n return this.store.select(feature.selectPowerbi_access_token).pipe(\n filter((ms_access_token: MSAccessTokenResponse | undefined): ms_access_token is MSAccessTokenResponse => !!ms_access_token),\n take(1),\n switchMap((ms_access_token: MSAccessTokenResponse) => {\n return next.handle(\n req.clone({\n setHeaders: {\n Authorization: `Bearer ${ms_access_token.access_token}`,\n },\n }),\n );\n }),\n );\n } else {\n return next.handle(req);\n }\n }\n}\n","import { HttpClient, HttpRequest } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { CubeAuth } from '../../module_b2c_login/CubeAuth.js';\nimport { Tenant, ProfileFeature, ProfileRole } from 'src/app/models/auth/admin-tool.type';\nimport { environment } from 'src/environments/environment';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n private readonly http: HttpClient = inject(HttpClient);\n token: BehaviorSubject = new BehaviorSubject(undefined);\n profile: BehaviorSubject = new BehaviorSubject(undefined);\n\n // Admin tool API services\n tenants(uniqueId: string): Observable> {\n return this.http.get>(`${environment.admin_tool_url}/users/${uniqueId}/solutions/${environment.solution}/tenants`);\n }\n\n roles(uniqueId: string, tenant: string): Observable> {\n return this.http.get>(`${environment.admin_tool_url}/tenants/${tenant}/users/${uniqueId}/platforms/CUBE/solutions/${environment.solution}/roles`);\n }\n\n features(role: string, tenant: string): Observable> {\n return this.http.get>(`${environment.admin_tool_url}/tenants/${tenant}/roles/${role}/platforms/CUBE/solutions/${environment.solution}/features`);\n }\n\n login() {\n /* this.msalService.loginRedirect();\n */\n CubeAuth.enableADB2C(\n environment.b2cPolicies.tenant,\n environment.b2cPolicies.clientId,\n environment.b2cPolicies.names.signUpSignIn,\n environment.b2cPolicies.redirectUri,\n environment.b2cPolicies.b2cLoginBaseUrl,\n );\n CubeAuth.setLogutRedirectUri(environment.b2cPolicies.postLogoutRedirectUri);\n\n CubeAuth.onADB2CNewToken = (idToken: any, expires: any, profileInfo: any) => {\n this.token.next(idToken);\n this.profile.next(profileInfo.name);\n };\n\n CubeAuth.auth();\n }\n\n logout() {\n /* this.msalService.logoutRedirect();\n */\n CubeAuth.logout();\n this.profile.next(undefined);\n this.token.next(undefined);\n }\n\n checkAndSetActiveAccount() {\n /**\n * If no active account set but there are accounts signed in, sets first account to active account\n * To use active account set here, subscribe to inProgress$ first in your component\n * Note: Basic usage demonstrated. Your app may require more complicated account selection logic\n */\n }\n\n isValidToken(expiration: number | undefined): boolean {\n return new Date(new Date().getTime() - 1000 * 300).valueOf() < (expiration || 1) * 1000;\n }\n\n resourceNeedsToken(request_url: string): boolean {\n return environment.bypass_auth_token_resources.every((resource) => !request_url.includes(resource));\n }\n\n cloneRequest(req: HttpRequest, idToken: string, append_token: boolean): HttpRequest {\n if (append_token) {\n const clonedReq = req.clone({\n setHeaders: {\n Authorization: `Bearer ${idToken}`,\n },\n });\n\n return clonedReq;\n } else {\n return req;\n }\n }\n\n public getCurrentTenant() {\n return localStorage.getItem('optimum-vision-dev_tenant');\n }\n}\n","import { Injectable } from '@angular/core';\nimport {jwtDecode} from 'jwt-decode';\n\ninterface DecodedToken {\n oid?: string; // Object ID\n sub?: string; // Subject\n [key: string]: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService {\n\n constructor() { }\n\n decodeToken(token: string): DecodedToken | null {\n try {\n return jwtDecode(token);\n } catch (error) {\n console.error('Error decoding token:', error);\n return null;\n }\n }\n\n getUniqueId(token: string): string {\n const decodedToken = this.decodeToken(token);\n if (decodedToken) {\n return decodedToken.oid || decodedToken.sub || '';\n }\n return '';\n }\n}","import { HttpErrorResponse } from '@angular/common/http';\nimport { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { Tenant, ProfileRole, ProfileFeature } from 'src/app/models/auth/admin-tool.type';\nimport { TokenDetails } from 'src/app/models/auth/token-details.type';\n\nexport const AuthActions = createActionGroup({\n source: 'Auth',\n events: {\n RedirectToGateway: emptyProps(),\n Login: emptyProps(),\n LoginSuccess:props<{ tokenDetails: TokenDetails }>(),\n Logout: emptyProps(),\n SetActiveAccount: emptyProps(),\n SetTokenDetails: props<{ tokenDetails: TokenDetails }>(),\n GetUserTenants: props<{ uniqueId: string }>(),\n GetUserTenantsSuccess: props<{ uniqueId: string; tenants: Array }>(),\n GetUserTenantsFailure: props<{ error: HttpErrorResponse }>(),\n GetUserRoles: props<{ uniqueId: string; tenant: string }>(),\n GetUserRolesSuccess: props<{ roles: Array; tenant: string }>(),\n GetUserRolesFailure: props<{ error: HttpErrorResponse }>(),\n GetUserFeatures: props<{ role: string; tenant: string }>(),\n GetUserFeaturesSuccess: props<{ features: Array }>(),\n GetUserFeaturesFailure: props<{ error: HttpErrorResponse }>(),\n setActiveRole: props<{ active_role: ProfileRole }>(),\n setActiveTenant: props<{ active_tenant: Tenant }>(),\n },\n});\n","import { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { LanguageOption } from 'src/app/models/core/language-option.type';\nimport { LayoutMode } from 'src/app/models/core/layout-mode.type';\nimport { SystemNotification } from 'src/app/models/core/system-notification.interface';\nimport { Theme } from 'src/app/models/core/theme.type';\n\nexport const SystemActions = createActionGroup({\n source: 'System',\n events: {\n OpenPage: props<{ url: string; target?: string }>(),\n Redirect: props<{ url: string }>(),\n RedirectToCourtesyPage: emptyProps(),\n RedirectToHomePage: emptyProps(),\n SetCurrentLang: props<{ currentLang: LanguageOption }>(),\n ToggleLanguage: emptyProps(),\n SetLayoutMode: props<{ layoutMode: LayoutMode }>(),\n SetNotification: props<{ notification: SystemNotification | undefined }>(),\n SetTheme: props<{ theme: Theme }>(),\n ChangeTheme: emptyProps(),\n StartLoading: emptyProps(),\n StopLoading: emptyProps(),\n },\n});\n","/* eslint-disable @ngrx/no-multiple-actions-in-effects */\nimport { Injectable, inject } from '@angular/core';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { catchError, delay, map, of, switchMap, tap } from 'rxjs';\n\nimport { AuthenticationService } from 'src/app/providers/services/authentication.service';\nimport { AuthActions } from '../actions/auth.actions';\nimport { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\nimport { Tenant, ProfileRole, ProfileFeature } from 'src/app/models/auth/admin-tool.type';\nimport { TokenDetails } from 'src/app/models/auth/token-details.type';\nimport { environment } from 'src/environments/environment';\nimport { SystemActions } from '../actions/system.actions';\nimport { selectActiveTenant, selectTokenDetails } from '../selectors/auth.selectors';\nimport { AppState } from '../states/app.state';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class AuthEffects {\n private readonly authService: AuthenticationService = inject(AuthenticationService);\n private readonly actions$: Actions = inject(Actions);\n private readonly store: Store = inject(Store);\n private router = inject(Router);\n\n redirectToGateway$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(AuthActions.redirectToGateway),\n tap(() => this.authService.login())\n );\n },\n { dispatch: false }\n );\n\n setActiveAccount$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(AuthActions.setActiveAccount),\n tap(() => this.authService.checkAndSetActiveAccount())\n );\n },\n { dispatch: false }\n );\n\n login$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(AuthActions.login),\n tap(() => this.authService.login())\n\n );\n },\n { dispatch: false }\n );\n\n logout$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(AuthActions.logout),\n tap(() => this.authService.logout())\n );\n },\n { dispatch: false }\n );\n\n changeActiveTenant$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(AuthActions.setActiveTenant),\n tap(({ active_tenant }) => localStorage.setItem(`${environment.localStorageKeyPrefix}_tenant`, active_tenant.name)),\n concatLatestFrom(() => this.store.select(selectTokenDetails)),\n map(([{ active_tenant }, tokenDetails]) => AuthActions.getUserRoles({ uniqueId: tokenDetails?.uniqueId ?? '', tenant: active_tenant.name }))\n );\n });\n\n changeActiveRole$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(AuthActions.setActiveRole),\n concatLatestFrom(() => this.store.select(selectActiveTenant)),\n map(([{ active_role }, tenant]) => AuthActions.getUserFeatures({ role: active_role.name, tenant }))\n );\n });\n\n userTenants$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(AuthActions.getUserTenants),\n switchMap(({ uniqueId }) =>\n this.authService.tenants(uniqueId).pipe(\n switchMap((tenants: Array) => {\n if (tenants.length) {\n const current_tenant: string | null = localStorage.getItem(`${environment.localStorageKeyPrefix}_tenant`);\n const active_tenant: Tenant = current_tenant ? { name: current_tenant, info: '' } : tenants[0];\n return [AuthActions.getUserTenantsSuccess({ uniqueId, tenants }), AuthActions.setActiveTenant({ active_tenant })];\n } else {\n return [AuthActions.setTokenDetails({ tokenDetails: {} }), SystemActions.redirectToCourtesyPage()];\n }\n }),\n catchError((error: HttpErrorResponse) => of(AuthActions.getUserTenantsFailure({ error })))\n )\n )\n );\n });\n\n userTenantsFailed$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(AuthActions.getUserTenantsFailure, AuthActions.getUserRolesFailure),\n tap(({ error }) => {\n if (error.status === HttpStatusCode.NotFound) {\n // eslint-disable-next-line @ngrx/no-dispatch-in-effects\n this.store.dispatch(SystemActions.redirectToCourtesyPage());\n }\n })\n );\n },\n { dispatch: false }\n );\n\n userRoles$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(AuthActions.getUserRoles),\n delay(200),\n switchMap(({ uniqueId, tenant }) =>\n this.authService.roles(uniqueId, tenant).pipe(\n map((roles: Array) => {\n if (roles.length) {\n if (roles[0].name === 'customer') {\n this.router.navigateByUrl('home/customer-transactions/carbon-credit/carbon-credits-list');\n } else {\n this.router.navigateByUrl('home/auditor-transactions/carbon-credit/carbon-credits-list');\n }\n return AuthActions.getUserRolesSuccess({ roles, tenant });\n } else {\n return SystemActions.redirectToCourtesyPage();\n }\n }),\n catchError((error: HttpErrorResponse) => of(AuthActions.getUserRolesFailure({ error })))\n )\n )\n );\n });\n\n userRolesSuccess$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(AuthActions.getUserRolesSuccess),\n map(({ roles, tenant }) => AuthActions.getUserFeatures({ role: roles.at(0)?.name ?? '', tenant }))\n );\n });\n\n userFeatures$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(AuthActions.getUserFeatures),\n switchMap(({ role, tenant }) =>\n this.authService.features(role, tenant).pipe(\n map((features: Array) => {\n if (features.length) {\n return AuthActions.getUserFeaturesSuccess({ features });\n } else {\n return SystemActions.redirectToCourtesyPage();\n }\n }),\n catchError((error: HttpErrorResponse) => of(AuthActions.getUserFeaturesFailure({ error })))\n )\n )\n );\n });\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { tap } from 'rxjs';\nimport { SystemActions } from '../actions/system.actions';\nimport { environment } from 'src/environments/environment';\n\n@Injectable()\nexport class SystemEffects {\n private readonly actions$: Actions = inject(Actions);\n private readonly router: Router = inject(Router);\n\n redirect$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(SystemActions.redirect),\n tap(({ url }) => this.router.navigateByUrl(url)),\n );\n },\n { dispatch: false },\n );\n\n redirectToCourtesyPage$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(SystemActions.redirectToCourtesyPage),\n tap(() => {\n sessionStorage.clear();\n localStorage.clear();\n window.location.href = environment.b2cPolicies.redirectCourtesyPageUri;\n }),\n );\n },\n { dispatch: false },\n );\n\n redirectToHomePage$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(SystemActions.redirectToHomePage),\n tap(() => this.router.navigateByUrl('dias/homepage')),\n );\n },\n { dispatch: false },\n );\n\n openPage$ = createEffect(\n () => {\n return this.actions$.pipe(\n ofType(SystemActions.openPage),\n tap(({ url, target }) => window.open(url, target)),\n );\n },\n { dispatch: false },\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Type } from '@angular/core';\nimport { ActionReducer, ActionReducerMap, MetaReducer, RuntimeChecks } from '@ngrx/store';\nimport { StoreDevtoolsConfig } from '@ngrx/store-devtools';\nimport { environment } from 'src/environments/environment';\nimport { AuthEffects } from './effects/auth.effects';\nimport { SystemEffects } from './effects/system.effects';\nimport { authReducers } from './reducers/auth.reducers';\nimport { systemReducers } from './reducers/system.reducers';\nimport { AppState } from './states/app.state';\nimport { localStorageSync, LocalStorageConfig } from 'ngrx-store-localstorage';\n\nexport const reducers: ActionReducerMap = {\n auth: authReducers,\n system: systemReducers,\n};\n\nexport const effects: Array> = [AuthEffects, SystemEffects];\n\nexport const runtimeChecks: RuntimeChecks = {\n strictActionImmutability: true,\n strictActionSerializability: true,\n strictActionWithinNgZone: true,\n strictStateImmutability: true,\n strictStateSerializability: true,\n strictActionTypeUniqueness: true,\n};\n\nexport const devtoolsConfig: StoreDevtoolsConfig = {\n maxAge: 25,\n logOnly: environment.production,\n};\n\nfunction localStorageSyncReducer(reducer: ActionReducer): ActionReducer {\n return localStorageSync(localStorageConfig)(reducer);\n}\n\nconst localStorageConfig: LocalStorageConfig = {\n keys: ['auth'],\n rehydrate: true,\n storageKeySerializer: (key: string) => `${environment.localStorageKeyPrefix}_${key}`,\n};\n\nexport const metaReducers: Array> = [localStorageSyncReducer];\n","import { createReducer, on } from '@ngrx/store';\nimport { AuthState } from '../states/auth.state';\nimport { AuthActions } from '../actions/auth.actions';\nimport { User } from 'src/app/models/auth/admin-tool.type';\nimport { jwtDecode } from 'jwt-decode';\n\nconst INIT_STATE: AuthState = {\n tokenDetails: undefined,\n user: undefined,\n};\n\nexport const authReducers = createReducer(\n INIT_STATE,\n on(\n AuthActions.getUserTenantsSuccess,\n (state: AuthState, { tenants }): AuthState => ({\n ...state,\n user: {\n ...(state.user as User),\n tenants,\n active_tenant: tenants.find((tenant) => tenant.name !== 'root')!,\n },\n }),\n ),\n on(\n AuthActions.getUserRolesSuccess,\n (state: AuthState, { roles }): AuthState => ({\n ...state,\n user: {\n ...(state.user as User),\n roles,\n active_role: roles.at(0)!,\n },\n }),\n ),\n on(\n AuthActions.getUserFeaturesSuccess,\n (state: AuthState, { features }): AuthState => ({\n ...state,\n user: {\n ...(state.user as User),\n features,\n },\n }),\n ),\n on(AuthActions.setTokenDetails, (state: AuthState, { tokenDetails }): AuthState => {\n const given_name = jwtDecode<{ name: string }>(tokenDetails.idToken).name;\n const auth = { tokenDetails, user: { ...state.user, given_name } as User };\n return { ...state, ...auth };\n }),\n on(\n AuthActions.setActiveTenant,\n (state: AuthState, { active_tenant }): AuthState => ({\n ...state,\n user: {\n ...(state.user as User),\n active_tenant,\n },\n }),\n ),\n on(\n AuthActions.setActiveRole,\n (state: AuthState, { active_role }): AuthState => ({\n ...state,\n user: {\n ...(state.user as User),\n active_role,\n },\n }),\n ),\n on(AuthActions.logout, (state: AuthState): AuthState => ({ ...state, tokenDetails: undefined, user: undefined })),\n);\n","import { createReducer, on } from '@ngrx/store';\nimport { SystemActions } from '../actions/system.actions';\nimport { SystemState } from '../states/system.state';\n\nconst INIT_STATE: SystemState = {\n currentLang: 'it',\n layoutMode: 'desktop',\n loading: false,\n notification: undefined,\n theme: 'light',\n};\n\nexport const systemReducers = createReducer(\n INIT_STATE,\n on(SystemActions.setCurrentLang, (state: SystemState, { currentLang }): SystemState => ({ ...state, currentLang })),\n on(SystemActions.toggleLanguage, (state: SystemState): SystemState => ({ ...state, currentLang: state.currentLang === 'en' ? 'it' : 'en' })),\n on(SystemActions.setLayoutMode, (state: SystemState, { layoutMode }): SystemState => ({ ...state, layoutMode })),\n on(SystemActions.setNotification, (state: SystemState, { notification }): SystemState => ({ ...state, notification })),\n on(SystemActions.setTheme, (state: SystemState, { theme }): SystemState => ({ ...state, theme })),\n on(SystemActions.changeTheme, (state: SystemState): SystemState => ({ ...state, theme: state.theme === 'dark' ? 'light' : 'dark' })),\n on(SystemActions.startLoading, (state: SystemState): SystemState => ({ ...state, loading: true })),\n on(SystemActions.stopLoading, (state: SystemState): SystemState => ({ ...state, loading: false })),\n);\n","import { createSelector } from '@ngrx/store';\nimport { TokenDetails } from 'src/app/models/auth/token-details.type';\nimport { AppState } from '../states/app.state';\nimport { AuthState } from '../states/auth.state';\nimport { Tenant, User } from 'src/app/models/auth/admin-tool.type';\n\nconst authState = (state: AppState): AuthState => state.auth;\nexport const selectTokenDetails = createSelector(authState, (state: AuthState): TokenDetails | undefined => state.tokenDetails);\nexport const selectUserDetails = createSelector(authState, (state: AuthState): User | undefined => state.user);\nexport const selectUserTenants = createSelector(authState, (state: AuthState): Array => state.user?.tenants ?? new Array());\nexport const selectActiveTenant = createSelector(selectUserDetails, (state: User | undefined): string => state?.active_tenant?.name ?? '');\n","import { createSelector } from '@ngrx/store';\nimport { AppState } from '../states/app.state';\nimport { SystemState } from '../states/system.state';\nimport { Theme } from 'src/app/models/core/theme.type';\nimport { SystemNotification } from 'src/app/models/core/system-notification.interface';\nimport { LanguageOption } from 'src/app/models/core/language-option.type';\nimport { LayoutMode } from 'src/app/models/core/layout-mode.type';\n\nconst systemState = (state: AppState): SystemState => state.system;\nexport const selectCurrentLang = createSelector(systemState, (state: SystemState): LanguageOption => state.currentLang);\nexport const selectLayoutMode = createSelector(systemState, (state: SystemState): LayoutMode => state.layoutMode);\nexport const selectLoading = createSelector(systemState, (state: SystemState): boolean => state?.loading);\nexport const selectNotifications = createSelector(systemState, (state: SystemState): SystemNotification | undefined => state?.notification);\nexport const selectTheme = createSelector(systemState, (state: SystemState): Theme => state?.theme);\n","import { globalEnvironment } from './global';\n\nexport const environment = {\n ...globalEnvironment,\n admin_tool_url: 'https://gw.cube.rina.org/admin-tool',\n api: {\n functions: 'https://gw.cube.rina.org/dias-ghg-func/test',\n grafana: 'https://grafana-e2e.azurewebsites.net',\n },\n b2cPolicies: {\n tenant: 'rinagroupb2c',\n clientId: '33e5456b-20ca-4cf6-b504-2a82fc74bf6d',\n tenantId: 'ab37f843-3ed8-42e4-b104-6929068b10db',\n // redirectUri: 'http://localhost:4200', for development\n redirectUri: 'https://ghgprojects-test.cube.rina.org',\n redirectCourtesyPageUri: 'https://wwww.rina.org/',\n postLogoutRedirectUri: 'https://www.rina.org/',\n b2cLoginBaseUrl: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/b2c_1a_signup_signin/oauth2/v2.0/',\n names: {\n signUpSignIn: 'B2C_1A_SIGNUP_SIGNIN',\n resetPassword: 'B2C_1A_PASSWORDRESET',\n },\n authorities: {\n signUpSignIn: {\n authority: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN',\n },\n resetPassword: {\n authority: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/B2C_1A_PASSWORDRESET',\n },\n editProfile: {\n authority: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com/B2C_1A_PROFILEEDIT',\n },\n },\n domain: 'https://login.rina.org/',\n subdomain: 'rinagroupb2c.onmicrosoft.com',\n authorityDomain: 'https://login.rina.org/rinagroupb2c.onmicrosoft.com',\n },\n base_url: 'https://gw.cube.rina.org/dias-ghg-func/test',\n localStorageKeyPrefix: 'cube-dias-ghg-test',\n};\n","import { POWERBI_CONFIG } from '../app/configs/powerbi.config';\n\nconst company = {\n logo: './assets/img/logo.png',\n logoBg: 'bgffd300',\n name: 'Cube DIAS GHG',\n role: '*',\n};\n\nconst bypass_auth_token_resources = ['blob.core.windows.net', 'api.powerbi.com', '/assets/i18n/'];\n\nconst features = {\n powerbi: { ...POWERBI_CONFIG, base_url: 'https://api.powerbi.com/v1.0/myOrg' },\n};\n\nconst solution = 'dias_ghg';\n\nexport const globalEnvironment = {\n production: false,\n company,\n solution,\n ...features,\n date_format: 'MM-dd-yyyy HH:mm',\n first_available_date: '2021-01-01',\n bypass_auth_token_resources,\n};\n","import { bootstrapApplication } from '@angular/platform-browser';\nimport { AppComponent } from './app/app.component';\nimport { appConfig } from './app/app.config';\n\nbootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));\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","baseUrl","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","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","CommonModule","inject","takeUntilDestroyed","RouterOutlet","delay","filter","map","TokenService","AuthActions","AuthenticationService","concatLatestFrom","selectTokenDetails","selectUserTenants","selectLoading","selectTheme","LoadingSpinnerComponent","NotificationHandlerDirective","CubeTranslateDirective","CubeLayoutModeHandlerDirective","i0","ɵɵelement","AppComponent","store","overlayContainer","isDarkTheme","authService","tokenService","dispatch","login","pipe","subscribe","uniqueId","getUniqueId","setTokenDetails","tokenDetails","loading$","select","theme","next","isDark","getContainerElement","classList","remove","add","tenants","getUserTenants","ɵɵdirectiveInject","i1","Store","i2","OverlayContainer","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","AppComponent_Template","rf","ctx","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","AppComponent_cube_loading_spinner_2_Template","ɵɵproperty","ɵɵpureFunction2","_c0","ɵɵadvance","ɵɵpipeBind1","i3","NgClass","NgIf","AsyncPipe","styles","HTTP_INTERCEPTORS","provideHttpClient","withInterceptorsFromDi","importProvidersFrom","LOCALE_ID","provideAnimations","provideRouter","withComponentInputBinding","provideEffects","provideStore","provideStoreDevtools","TranslateModule","ROUTES","AzureTokenInterceptor","LoadingInterceptor","MetadataInterceptor","NotificationInterceptor","PowerBITokenInterceptor","translate","appConfig","providers","reducers","metaReducers","devtoolsConfig","effects","forRoot","config","provide","useValue","useClass","multi","path","redirectTo","pathMatch","loadChildren","canActivate","then","routes","ErrorRoutes","MatProgressSpinnerModule","LoadingSpinnerComponent_Template","MatProgressSpinner","POWERBI_CONFIG","groupId","reportId","HttpClient","MissingTranslationHandler","TranslateLoader","TranslateHttpLoader","CubeMissingTranslationHandler","handle","params","interpolateParams","missing","httpTranslateLoader","http","defaultLanguage","loader","useFactory","deps","isolate","missingTranslationHandler","locales","label","BreakpointObserver","SystemActions","breakpointObserver","observe","res","matches","isResponsive","layoutMode","setLayoutMode","MatSnackBarConfig","NavigationEnd","selectNotifications","MessageType","router","snackbar","notification","openNotificationSnackbar","events","event","setNotification","dismiss","type","message","snackBarConfig","open","panelClass","snackbar_config","snackbar_duration","snackbar_error_duration","Info","duration","Router","MatSnackBar","selectCurrentLang","translateService","browserLang","getBrowserLang","currentLang","setCurrentLang","language","use","TranslateService","environment","PowerBiHttpService","getMicrosoftAccessToken","get","getPowerBiEmbedToken","accessLevel","allowSaveAs","post","powerbi","ɵɵinject","factory","ɵfac","createFeature","reducer","PowerBIEffects","feature","name","selectPowerbi_access_token","selectPowerbi_embed_token","selectPowerbi_embed_configuration","createActionGroup","emptyProps","props","PowerBIActions","source","PowerBIServicePrincipalLogin","PowerBIServicePrincipalLoginSuccess","PowerBIServicePrincipalLoginFailure","PowerBIToken","PowerBITokenSuccess","PowerBITokenFailure","PowerBITokenConfiguration","createEffect","ofType","pbi","catchError","of","switchMap","actions$","httpService","powerbiLogin$","powerBIServicePrincipalLogin","response","powerBIServicePrincipalLoginSuccess","powerBIServicePrincipalLoginFailure","powerbiLoginSuccess$","powerBIToken","powerbiToken$","powerBITokenSuccess","powerBITokenFailure","powerbiTokenResponse$","configuration","tokenType","models","TokenType","Embed","permissions","Permissions","Read","embedUrl","id","accessToken","powerBITokenConfiguration","Actions","createReducer","on","INIT_STATE","powerbi_access_token","powerbi_embed_token","powerbi_embed_configuration","intercept","req","appendToken","resourceNeedsToken","clonedReq","clone","setHeaders","Authorization","finalize","counter","startLoading","stopLoading","active_tenant","localStorageKeyPrefix","excludedResources","some","includes","append","solution","production","admin_tool_url","user","userName","account","username","HttpStatusCode","throwError","status","NotFound","statusText","take","startsWith","base_url","ms_access_token","access_token","BehaviorSubject","profile","roles","role","b2cPolicies","names","signUpSignIn","b2cLoginBaseUrl","postLogoutRedirectUri","checkAndSetActiveAccount","isValidToken","expiration","getTime","valueOf","request_url","bypass_auth_token_resources","every","resource","cloneRequest","append_token","getCurrentTenant","providedIn","jwtDecode","decodeToken","decodedToken","oid","sub","RedirectToGateway","Login","LoginSuccess","Logout","SetActiveAccount","SetTokenDetails","GetUserTenants","GetUserTenantsSuccess","GetUserTenantsFailure","GetUserRoles","GetUserRolesSuccess","GetUserRolesFailure","GetUserFeatures","GetUserFeaturesSuccess","GetUserFeaturesFailure","setActiveRole","setActiveTenant","OpenPage","Redirect","RedirectToCourtesyPage","RedirectToHomePage","SetCurrentLang","ToggleLanguage","SetLayoutMode","SetNotification","SetTheme","ChangeTheme","StartLoading","StopLoading","tap","selectActiveTenant","AuthEffects","redirectToGateway$","redirectToGateway","setActiveAccount$","setActiveAccount","login$","logout$","changeActiveTenant$","getUserRoles","changeActiveRole$","active_role","getUserFeatures","userTenants$","current_tenant","getUserTenantsSuccess","redirectToCourtesyPage","getUserTenantsFailure","userTenantsFailed$","getUserRolesFailure","userRoles$","navigateByUrl","getUserRolesSuccess","userRolesSuccess$","at","userFeatures$","getUserFeaturesSuccess","getUserFeaturesFailure","SystemEffects","redirect$","redirect","redirectToCourtesyPage$","redirectCourtesyPageUri","redirectToHomePage$","redirectToHomePage","openPage$","openPage","target","authReducers","systemReducers","localStorageSync","system","runtimeChecks","strictActionImmutability","strictActionSerializability","strictActionWithinNgZone","strictStateImmutability","strictStateSerializability","strictActionTypeUniqueness","maxAge","logOnly","localStorageSyncReducer","localStorageConfig","rehydrate","storageKeySerializer","find","given_name","loading","toggleLanguage","setTheme","changeTheme","createSelector","authState","selectUserDetails","Array","systemState","selectLayoutMode","globalEnvironment","api","functions","grafana","resetPassword","authorities","authority","editProfile","domain","subdomain","authorityDomain","company","logo","logoBg","date_format","first_available_date","bootstrapApplication","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}