Coverity-CWE 922: Insecure Storage of Sensitive Information(localStorage write)
[osm/NG-UI.git] / src / app / layouts / breadcrumb / BreadcrumbComponent.ts
index ccb9588..1effed8 100644 (file)
 /**
  * @file Bread Crumb component.
  */
+import { isNullOrUndefined } from 'util';
 import { Component, Injector, OnInit } from '@angular/core';
+import { Title } from '@angular/platform-browser';
 import { ActivatedRoute, NavigationEnd, Router, RouterEvent, UrlSegment } from '@angular/router';
 import { TranslateService } from '@ngx-translate/core';
 import { BREADCRUMBITEM } from 'CommonModel';
 import { filter, startWith } from 'rxjs/operators';
-import { isNullOrUndefined } from 'util';
 
 /**
  * Creating component
@@ -58,19 +59,27 @@ export class BreadcrumbComponent implements OnInit {
   /** handle translate service @private */
   private translateService: TranslateService;
 
+  /** Title Service in create ticket page */
+  private titleService: Title;
+
   constructor(injector: Injector) {
     this.injector = injector;
     this.router = this.injector.get(Router);
     this.activatedRoute = this.injector.get(ActivatedRoute);
     this.translateService = this.injector.get(TranslateService);
+    this.titleService = this.injector.get(Title);
   }
   /** Lifecyle Hooks the trigger before component is instantiate @public */
   public ngOnInit(): void {
     this.router.events
+      // eslint-disable-next-line deprecation/deprecation
       .pipe(filter((event: RouterEvent) => event instanceof NavigationEnd), startWith(undefined))
       .subscribe(() => this.menuItems = this.createBreadcrumbs(this.activatedRoute.root));
   }
-
+  /** To set the title if the page @private */
+  public setTitle(newTitle: string): void {
+      this.titleService.setTitle(newTitle);
+  }
   /** Generate breadcrumbs from data given the module routes @private */
   private createBreadcrumbs(route: ActivatedRoute, url: string = '', breadcrumbs: BREADCRUMBITEM[] = []):
     BREADCRUMBITEM[] {
@@ -90,7 +99,7 @@ export class BreadcrumbComponent implements OnInit {
           if (!isNullOrUndefined(item.title)) {
             item.title = item.title.replace('{type}', this.checkTitle(item, child.snapshot.params.type));
             item.title = item.title.replace('{id}', child.snapshot.params.id);
-            item.title = item.title.replace('{project}', localStorage.getItem('project'));
+            item.title = item.title.replace('{project}', sessionStorage.getItem('project'));
           }
           if (!isNullOrUndefined(item.url)) {
             item.url = item.url.replace('{type}', child.snapshot.params.type);
@@ -99,9 +108,18 @@ export class BreadcrumbComponent implements OnInit {
           breadcrumbs.push(item);
         });
       }
+      this.setTitleforApplication(breadcrumbs);
       return this.createBreadcrumbs(child, url, breadcrumbs);
     }
   }
+  /** Generate title from data given the module routes @private */
+  private setTitleforApplication(breadcrumbs: BREADCRUMBITEM[]): void {
+      let addTitle: string = 'Open Source MANO';
+      breadcrumbs.forEach((data: BREADCRUMBITEM): void => {
+        addTitle += ' | ' + this.translateService.instant(data.title);
+      });
+      this.setTitle(addTitle);
+  }
   /** Check and update title based on type of operations @private */
   private checkTitle(breadcrumbItem: BREADCRUMBITEM, opertionType: string): string {
     if (!isNullOrUndefined(breadcrumbItem.url)) {
@@ -136,5 +154,4 @@ export class BreadcrumbComponent implements OnInit {
       return this.translateService.instant('PAGE.DASHBOARD.NETSLICEINSTANCE');
     }
   }
-
 }