Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/admin-tools/admin-tools.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/admin-tools/admin-tools.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/admin-tools/admin-tools.ts	(working copy)
@@ -4,7 +4,7 @@
 import {RoleManagement} from '../sub-components/role-management/role-management';
 import {OperationLogs} from '../sub-components/operation-logs/operation-logs';
 import {SystemControl} from '../sub-components/system-control/system-control';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-admin-tools',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.html	(nonexistent)
@@ -1,32 +0,0 @@
-<div class="notification {{data.type}}" role="alert">
-  <div
-    class="message-container"
-    [matTooltip]="data.message" matTooltipPosition="below"
-    matTooltipClass="error-tooltip"
-  >
-    <div class="icon-container">
-      @if (data.type === 'success') {
-        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
-             stroke-linecap="round" stroke-linejoin="round">
-          <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
-          <polyline points="22 4 12 14.01 9 11.01"></polyline>
-        </svg>
-      } @else {
-        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
-          <circle cx="12" cy="12" r="10"/>
-          <line x1="12" y1="8" x2="12" y2="12"/>
-          <line x1="12" y1="16" x2="12.01" y2="16"/>
-        </svg>
-      }
-    </div>
-    <span class="message">
-      {{ data.message.length > 50 ? (data.message | slice:0:50) + '...' : data.message }}
-    </span>
-  </div>
-  <button class="dismiss-btn" (click)="dismiss()" aria-label="Dismiss notification">
-    <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
-         stroke-linecap="round" stroke-linejoin="round">
-      <path d="M18 6L6 18M6 6l12 12"/>
-    </svg>
-  </button>
-</div>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.html	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.html	(working copy)
@@ -0,0 +1,32 @@
+<div class="notification {{data.type}}" role="alert">
+  <div
+    class="message-container"
+    [matTooltip]="data.message" matTooltipPosition="below"
+    matTooltipClass="error-tooltip"
+  >
+    <div class="icon-container">
+      @if (data.type === 'success') {
+        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
+             stroke-linecap="round" stroke-linejoin="round">
+          <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
+          <polyline points="22 4 12 14.01 9 11.01"></polyline>
+        </svg>
+      } @else {
+        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
+          <circle cx="12" cy="12" r="10"/>
+          <line x1="12" y1="8" x2="12" y2="12"/>
+          <line x1="12" y1="16" x2="12.01" y2="16"/>
+        </svg>
+      }
+    </div>
+    <span class="message">
+      {{ data.message.length > 50 ? (data.message | slice:0:50) + '...' : data.message }}
+    </span>
+  </div>
+  <button class="dismiss-btn" (click)="dismiss()" aria-label="Dismiss notification">
+    <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
+         stroke-linecap="round" stroke-linejoin="round">
+      <path d="M18 6L6 18M6 6l12 12"/>
+    </svg>
+  </button>
+</div>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.scss	(nonexistent)
@@ -1,123 +0,0 @@
-$font-family: 'Inter', sans-serif;
-$max-width: 420px;
-$base-color: #2c3e50;
-$text-color: #fff;
-$radius: 6px;
-$padding: 12px 16px;
-$shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
-
-// Type Colors
-$error-accent: #e74c3c;
-$success-accent: #2ecc71;
-$success-bg: #27ae60; // Keep separate if needed for other elements
-
-.notification {
-  display: flex;
-  align-items: flex-start;
-  justify-content: space-between;
-
-  max-width: $max-width;
-
-  font-family: $font-family;
-  font-size: 14px;
-  font-weight: 500;
-  color: $text-color;
-
-  border-radius: $radius;
-  background-color: $base-color;
-
-  padding: $padding;
-
-  box-shadow: $shadow;
-
-  border-left: 4px solid rgba(255, 255, 255, 0.2); // Default accent border
-
-  animation: slideIn 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
-  transition: opacity 0.3s ease-out;
-  outline: none;
-
-  .message-container {
-    display: flex;
-    align-items: flex-start;
-    flex-grow: 1;
-    margin-right: 10px;
-    min-width: 0;
-  }
-
-  .icon-container {
-    margin-right: 10px;
-    flex-shrink: 0;
-    padding-top: 1px;
-
-    svg {
-      display: block;
-      width: 16px;
-      height: 16px;
-      stroke: currentColor;
-      fill: none;
-    }
-  }
-
-  .message {
-    white-space: nowrap;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    line-height: 1.4;
-    max-width: 100%;
-  }
-
-  .dismiss-btn {
-    background: none;
-    border: none;
-    cursor: pointer;
-    color: $text-color;
-    opacity: 0.5;
-    transition: opacity 0.2s, transform 0.2s;
-    padding: 0;
-    margin-top: 2px;
-    flex-shrink: 0;
-    outline: none;
-
-    svg {
-      display: block;
-      width: 12px;
-      height: 12px;
-      stroke-width: 2.5;
-      stroke: currentColor;
-    }
-    &:hover {
-      opacity: 1;
-      transform: scale(1.05);
-    }
-  }
-
-  // --- Type-Specific Styles (Error/Success) ---
-
-  &.error {
-    border-color: $error-accent;
-
-    .icon-container svg {
-      stroke: $error-accent;
-    }
-  }
-
-  &.success {
-    // Note: We use the base color for the body, only accenting the stripe and icon
-    border-color: $success-accent;
-
-    .icon-container svg {
-      stroke: $success-accent;
-    }
-  }
-}
-
-@keyframes slideIn {
-  from {
-    transform: translateY(-20px);
-    opacity: 0;
-  }
-  to {
-    transform: translateY(0);
-    opacity: 1;
-  }
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.scss	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.scss	(working copy)
@@ -0,0 +1,123 @@
+$font-family: 'Inter', sans-serif;
+$max-width: 420px;
+$base-color: #2c3e50;
+$text-color: #fff;
+$radius: 6px;
+$padding: 12px 16px;
+$shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
+
+// Type Colors
+$error-accent: #e74c3c;
+$success-accent: #2ecc71;
+$success-bg: #27ae60; // Keep separate if needed for other elements
+
+.notification {
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+
+  max-width: $max-width;
+
+  font-family: $font-family;
+  font-size: 14px;
+  font-weight: 500;
+  color: $text-color;
+
+  border-radius: $radius;
+  background-color: $base-color;
+
+  padding: $padding;
+
+  box-shadow: $shadow;
+
+  border-left: 4px solid rgba(255, 255, 255, 0.2); // Default accent border
+
+  animation: slideIn 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
+  transition: opacity 0.3s ease-out;
+  outline: none;
+
+  .message-container {
+    display: flex;
+    align-items: flex-start;
+    flex-grow: 1;
+    margin-right: 10px;
+    min-width: 0;
+  }
+
+  .icon-container {
+    margin-right: 10px;
+    flex-shrink: 0;
+    padding-top: 1px;
+
+    svg {
+      display: block;
+      width: 16px;
+      height: 16px;
+      stroke: currentColor;
+      fill: none;
+    }
+  }
+
+  .message {
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    line-height: 1.4;
+    max-width: 100%;
+  }
+
+  .dismiss-btn {
+    background: none;
+    border: none;
+    cursor: pointer;
+    color: $text-color;
+    opacity: 0.5;
+    transition: opacity 0.2s, transform 0.2s;
+    padding: 0;
+    margin-top: 2px;
+    flex-shrink: 0;
+    outline: none;
+
+    svg {
+      display: block;
+      width: 12px;
+      height: 12px;
+      stroke-width: 2.5;
+      stroke: currentColor;
+    }
+    &:hover {
+      opacity: 1;
+      transform: scale(1.05);
+    }
+  }
+
+  // --- Type-Specific Styles (Error/Success) ---
+
+  &.error {
+    border-color: $error-accent;
+
+    .icon-container svg {
+      stroke: $error-accent;
+    }
+  }
+
+  &.success {
+    // Note: We use the base color for the body, only accenting the stripe and icon
+    border-color: $success-accent;
+
+    .icon-container svg {
+      stroke: $success-accent;
+    }
+  }
+}
+
+@keyframes slideIn {
+  from {
+    transform: translateY(-20px);
+    opacity: 0;
+  }
+  to {
+    transform: translateY(0);
+    opacity: 1;
+  }
+}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { AppNotification } from './app-notification';
-
-describe('AppNotification', () => {
-  let component: AppNotification;
-  let fixture: ComponentFixture<AppNotification>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [AppNotification]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(AppNotification);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.spec.ts	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.spec.ts	(working copy)
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AppNotification } from './app-notification';
+
+describe('AppNotification', () => {
+  let component: AppNotification;
+  let fixture: ComponentFixture<AppNotification>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [AppNotification]
+    })
+    .compileComponents();
+
+    fixture = TestBed.createComponent(AppNotification);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.ts	(nonexistent)
@@ -1,22 +0,0 @@
-import {Component, Inject} from '@angular/core';
-import {MAT_SNACK_BAR_DATA, MatSnackBarRef} from '@angular/material/snack-bar';
-import {SharedModule} from '../../shared/shared-module';
-
-@Component({
-  selector: 'app-app-notification',
-  imports: [SharedModule],
-  templateUrl: './app-notification.html',
-  styleUrl: './app-notification.scss'
-})
-export class AppNotification {
-
-
-  constructor(
-    @Inject(MAT_SNACK_BAR_DATA) public data: { message: string; type: 'success' | 'error' },
-    private snackBarRef: MatSnackBarRef<AppNotification>) {
-  }
-
-  dismiss() {
-    this.snackBarRef.dismiss();
-  }
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/app-notification/app-notification.ts	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.ts	(working copy)
@@ -0,0 +1,22 @@
+import {Component, Inject} from '@angular/core';
+import {MAT_SNACK_BAR_DATA, MatSnackBarRef} from '@angular/material/snack-bar';
+import {SharedModule} from '../../../shared/shared-module';
+
+@Component({
+  selector: 'app-app-notification',
+  imports: [SharedModule],
+  templateUrl: './app-notification.html',
+  styleUrl: './app-notification.scss'
+})
+export class AppNotification {
+
+
+  constructor(
+    @Inject(MAT_SNACK_BAR_DATA) public data: { message: string; type: 'success' | 'error' },
+    private snackBarRef: MatSnackBarRef<AppNotification>) {
+  }
+
+  dismiss() {
+    this.snackBarRef.dismiss();
+  }
+}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/apv-ssl-management/apv-ssl-management.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/apv-ssl-management/apv-ssl-management.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/apv-ssl-management/apv-ssl-management.ts	(working copy)
@@ -1,11 +1,10 @@
-import {ChangeDetectorRef, Component, inject, OnDestroy, OnInit, ViewChild} from '@angular/core';
+import {ChangeDetectorRef, Component, inject, OnInit, ViewChild} from '@angular/core';
 import {MatTableDataSource} from "@angular/material/table";
 import {SharedModule} from '../../shared/shared-module';
 import {MatPaginator} from '@angular/material/paginator';
 import {MAT_DIALOG_DATA, MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
-import {ActivatedRoute, Router} from '@angular/router';
+import {Router} from '@angular/router';
 import {NotificationService} from '../../services/notification';
-import {Confirmation} from '../../services/confirmation';
 import {DeviceService} from '../../services/device-service';
 import {GlobalSerialPipe} from '../../pipes/global-serial-pipe';
 import {take} from 'rxjs/operators';
@@ -35,10 +34,7 @@
 
   constructor(
     private _device: DeviceService,
-    private _route: ActivatedRoute,
-    private _cdRef: ChangeDetectorRef,
     private _notification: NotificationService,
-    private _confirmation: Confirmation,
     private _router: Router,
     private _storage: Storage
   ) {
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.html	(nonexistent)
@@ -1 +0,0 @@
-<p>avx-management works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { AvxManagement } from './avx-management';
-
-describe('AvxManagement', () => {
-  let component: AvxManagement;
-  let fixture: ComponentFixture<AvxManagement>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [AvxManagement]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(AvxManagement);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/avx-management/avx-management.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-avx-management',
-  imports: [],
-  templateUrl: './avx-management.html',
-  styleUrl: './avx-management.scss'
-})
-export class AvxManagement {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.scss	(added)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.scss	(revision 0)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.scss	(revision 0)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/config-hub/config-hub.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/config-hub/config-hub.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/config-hub/config-hub.ts	(working copy)
@@ -8,7 +8,7 @@
 import {
   DeviceCustomConfigTemplates
 } from '../sub-components/device-custom-config-templates/device-custom-config-templates';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-config-hub',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/dashboard/dashboard.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/dashboard/dashboard.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/dashboard/dashboard.ts	(working copy)
@@ -4,7 +4,7 @@
 import {MatTabChangeEvent} from '@angular/material/tabs';
 import {DashboardSystemInsights} from '../sub-components/dashboard-system-insights/dashboard-system-insights';
 import {DashboardDeviceInsights} from '../sub-components/dashboard-device-insights/dashboard-device-insights';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 import {DashboardInsightsDevices} from '../sub-components/dashboard-insights-devices/dashboard-insights-devices';
 
 @Component({
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.html	(nonexistent)
@@ -1 +0,0 @@
-<p>device-services works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { DeviceServices } from './device-services';
-
-describe('DeviceServices', () => {
-  let component: DeviceServices;
-  let fixture: ComponentFixture<DeviceServices>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [DeviceServices]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(DeviceServices);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/device-services/device-services.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-device-services',
-  imports: [],
-  templateUrl: './device-services.html',
-  styleUrl: './device-services.scss'
-})
-export class DeviceServices {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/general-settings/general-settings.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/general-settings/general-settings.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/general-settings/general-settings.ts	(working copy)
@@ -8,7 +8,7 @@
 import {Network} from '../sub-components/network/network';
 import {AdminAaa} from '../sub-components/admin-aaa/admin-aaa';
 import {SystemBackupRestore} from '../sub-components/system-backup-restore/system-backup-restore';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-general-settings',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.html	(nonexistent)
@@ -1 +0,0 @@
-<p>inventory works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { Inventory } from './inventory';
-
-describe('Inventory', () => {
-  let component: Inventory;
-  let fixture: ComponentFixture<Inventory>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [Inventory]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(Inventory);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/inventory/inventory.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-inventory',
-  imports: [],
-  templateUrl: './inventory.html',
-  styleUrl: './inventory.scss'
-})
-export class Inventory {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/log-analysis/log-analysis.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/log-analysis/log-analysis.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/log-analysis/log-analysis.ts	(working copy)
@@ -1,7 +1,7 @@
 import {Component, OnInit} from '@angular/core';
 import {SharedModule} from '../../shared/shared-module';
 import {LogAnalysisSlbOverview} from '../sub-components/log-analysis-slb-overview/log-analysis-slb-overview';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-log-analysis',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/login/login.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/login/login.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/login/login.ts	(working copy)
@@ -4,6 +4,7 @@
 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
 import {ActivatedRoute, Router} from '@angular/router';
 import {take} from 'rxjs/operators';
+import {Storage} from '../../services/storage';
 
 @Component({
   selector: 'app-login',
@@ -25,7 +26,11 @@
   copyRightYear: number = new Date().getUTCFullYear();
   private cdr = inject(ChangeDetectorRef);
 
-  constructor(private authService: Auth, private formBuilder: FormBuilder, private router: Router, private route: ActivatedRoute) {
+  constructor(private authService: Auth,
+              private formBuilder: FormBuilder,
+              private router: Router,
+              private route: ActivatedRoute,
+              private storage: Storage,) {
     if (this.authService.currentUserValue) {
       this.router.navigate(['/dashboard']);
     }
@@ -44,7 +49,7 @@
 
   onLogin(): void | null {
     this.submitting = true;
-    this.errorMessage = ''; // Clear previous errors
+    this.errorMessage = '';
     if (!this.loginForm.valid) {
       this.errorMessage = 'Invalid login credentials.';
       this.cdr.detectChanges();
@@ -52,8 +57,24 @@
     }
     this.loading = true;
     this.authService.login(this.f['username'].value, this.f['password'].value).pipe(take(1)).subscribe({
-      next: result => {
-        this.router.navigate([this.returnUrl]);
+      next: (resp: any) => {
+        this.authService.getUserAuthorization(this.f['username'].value)
+          .pipe(take(1)).subscribe({
+          next: (result: any) => {
+            if (result && result?.length > 0) {
+              if (result[0]) {
+                let authz = result[1]["result"];
+                this.storage.setItem('roleId', authz?.role_id);
+                this.storage.setItem('isRoot', authz?.root);
+                this.storage.setItem('userType', authz?.user_type);
+                this.router.navigate([this.returnUrl]);
+              }
+            }
+          },
+          error: error => {
+            this.errorMessage = error;
+          }
+        })
       },
       error: error => {
         this.errorMessage = error.message;
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/monitoring/monitoring.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/monitoring/monitoring.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/monitoring/monitoring.ts	(working copy)
@@ -4,7 +4,7 @@
 import {ResourceMonitoringApv} from '../sub-components/resource-monitoring-apv/resource-monitoring-apv';
 import {ResourceMonitoringSslVpn} from '../sub-components/resource-monitoring-ssl-vpn/resource-monitoring-ssl-vpn';
 // import {ResourceMonitoringAsf} from '../sub-components/resource-monitoring-asf/resource-monitoring-asf';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-monitoring',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/notification/notification.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/notification/notification.ts	(revision 2739)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/notification/notification.ts	(working copy)
@@ -1,7 +1,7 @@
 import {Component} from '@angular/core';
 import {NotificationSettings} from '../sub-components/notification-settings/notification-settings';
 import {SharedModule} from '../../shared/shared-module';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 import {NotificationChannels} from '../sub-components/notification-channels/notification-channels';
 
 @Component({
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/reports/reports.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/reports/reports.ts	(revision 2739)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/reports/reports.ts	(working copy)
@@ -1,6 +1,6 @@
 import {Component} from '@angular/core';
 import {SharedModule} from '../../shared/shared-module';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 import {ReportsOverview} from '../sub-components/reports-overview/reports-overview';
 import {ReportTasks} from '../sub-components/report-tasks/report-tasks';
 import {ReportsCustomization} from '../sub-components/reports-customization/reports-customization';
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/storage/storage.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/storage/storage.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/storage/storage.ts	(working copy)
@@ -1,5 +1,5 @@
 import {Component} from '@angular/core';
-import {TabContainer, TabDefinition} from "../tab-container/tab-container";
+import {TabContainer, TabDefinition} from "../common/tab-container/tab-container";
 import {StoragePrimary} from '../sub-components/storage-primary/storage-primary';
 import {StorageSecondary} from '../sub-components/storage-secondary/storage-secondary';
 import {StorageLogLocation} from '../sub-components/storage-log-location/storage-log-location';
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/apv-ssl-overview/apv-ssl-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/apv-ssl-overview/apv-ssl-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/apv-ssl-overview/apv-ssl-overview.ts	(working copy)
@@ -6,7 +6,7 @@
 import {
   ApvSslCertificateBackupRestore
 } from '../apv-ssl-certificate-backup-restore/apv-ssl-certificate-backup-restore';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 import {ApvSslClientVerification} from '../apv-ssl-client-verification/apv-ssl-client-verification';
 
 @Component({
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-device-details/avx-device-details.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-device-details/avx-device-details.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-device-details/avx-device-details.ts	(working copy)
@@ -5,7 +5,7 @@
 import {AvxDeviceDetailConfiguration} from '../avx-device-detail-configuration/avx-device-detail-configuration';
 import {AvxDeviceDetailLogs} from '../avx-device-detail-logs/avx-device-detail-logs';
 import {SharedModule} from '../../../shared/shared-module';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-avx-device-details',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-instances-overview/avx-instances-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-instances-overview/avx-instances-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-instances-overview/avx-instances-overview.ts	(working copy)
@@ -2,7 +2,7 @@
 import {SharedModule} from '../../../shared/shared-module';
 import {AvxVaInstances} from '../avx-va-instances/avx-va-instances';
 import {AvxVaBackup} from '../avx-va-backup/avx-va-backup';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-avx-instances-overview',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instance-details/avx-va-instance-details.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instance-details/avx-va-instance-details.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instance-details/avx-va-instance-details.ts	(working copy)
@@ -2,7 +2,7 @@
 import {ActivatedRoute, Router} from '@angular/router';
 import {SharedModule} from '../../../shared/shared-module';
 import {AvxVaInstanceOverview} from '../avx-va-instance-overview/avx-va-instance-overview';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 import {AvxDeviceDetailConfiguration} from '../avx-device-detail-configuration/avx-device-detail-configuration';
 import {AvxDeviceDetailLogs} from '../avx-device-detail-logs/avx-device-detail-logs';
 
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instance-overview/avx-va-instance-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instance-overview/avx-va-instance-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instance-overview/avx-va-instance-overview.ts	(working copy)
@@ -1,6 +1,6 @@
 import {Component, OnInit, ViewChild} from '@angular/core';
 import {SharedModule} from '../../../shared/shared-module';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {AvxService} from '../../../services/avx-service';
 import {NotificationService} from '../../../services/notification';
 import {take} from 'rxjs/operators';
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.html	(nonexistent)
@@ -1 +0,0 @@
-<p>backup-restore-settings works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { BackupRestoreSettings } from './backup-restore-settings';
-
-describe('BackupRestoreSettings', () => {
-  let component: BackupRestoreSettings;
-  let fixture: ComponentFixture<BackupRestoreSettings>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [BackupRestoreSettings]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(BackupRestoreSettings);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/backup-restore-settings/backup-restore-settings.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-backup-restore-settings',
-  imports: [],
-  templateUrl: './backup-restore-settings.html',
-  styleUrl: './backup-restore-settings.scss'
-})
-export class BackupRestoreSettings {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/dashboard-device-insights/dashboard-device-insights.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/dashboard-device-insights/dashboard-device-insights.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/dashboard-device-insights/dashboard-device-insights.ts	(working copy)
@@ -4,7 +4,7 @@
 import {DashboardInsightsApv} from '../dashboard-insights-apv/dashboard-insights-apv';
 import {DashboardInsightsSslvpn} from '../dashboard-insights-sslvpn/dashboard-insights-sslvpn';
 import {DashboardInsightsAvx} from '../dashboard-insights-avx/dashboard-insights-avx';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-dashboard-device-insights',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/device-ha-overview/device-ha-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/device-ha-overview/device-ha-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/device-ha-overview/device-ha-overview.ts	(working copy)
@@ -4,7 +4,7 @@
 import {DeviceHaBaseSettings} from '../device-ha-base-settings/device-ha-base-settings';
 import {DeviceHaUnit} from '../device-ha-unit/device-ha-unit';
 import {DeviceHaGroup} from '../device-ha-group/device-ha-group';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-device-ha-overview',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.html	(nonexistent)
@@ -1 +0,0 @@
-<p>log-analysis-ssl-vpn-overview works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { LogAnalysisSslVpnOverview } from './log-analysis-ssl-vpn-overview';
-
-describe('LogAnalysisSslVpnOverview', () => {
-  let component: LogAnalysisSslVpnOverview;
-  let fixture: ComponentFixture<LogAnalysisSslVpnOverview>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [LogAnalysisSslVpnOverview]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(LogAnalysisSslVpnOverview);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/log-analysis-ssl-vpn-overview/log-analysis-ssl-vpn-overview.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-log-analysis-ssl-vpn-overview',
-  imports: [],
-  templateUrl: './log-analysis-ssl-vpn-overview.html',
-  styleUrl: './log-analysis-ssl-vpn-overview.scss'
-})
-export class LogAnalysisSslVpnOverview {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/resource-monitoring-apv/resource-monitoring-apv.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/resource-monitoring-apv/resource-monitoring-apv.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/resource-monitoring-apv/resource-monitoring-apv.ts	(working copy)
@@ -3,7 +3,7 @@
 import {ResourceMonitoringLlb} from '../resource-monitoring-llb/resource-monitoring-llb';
 import {ResourceMonitoringSlbVirtual} from '../resource-monitoring-slb-virtual/resource-monitoring-slb-virtual';
 import {ResourceMonitoringSlbReal} from '../resource-monitoring-slb-real/resource-monitoring-slb-real';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-resource-monitoring-apv',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.html	(nonexistent)
@@ -1 +0,0 @@
-<p>storage-overview works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { StorageOverview } from './storage-overview';
-
-describe('StorageOverview', () => {
-  let component: StorageOverview;
-  let fixture: ComponentFixture<StorageOverview>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [StorageOverview]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(StorageOverview);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/storage-overview/storage-overview.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-storage-overview',
-  imports: [],
-  templateUrl: './storage-overview.html',
-  styleUrl: './storage-overview.scss'
-})
-export class StorageOverview {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-acl-groups/vpn-acl-groups.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-acl-groups/vpn-acl-groups.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-acl-groups/vpn-acl-groups.ts	(working copy)
@@ -3,7 +3,7 @@
 import {ActivatedRoute, Router} from '@angular/router';
 import {VpnAclResources} from '../vpn-acl-resources/vpn-acl-resources';
 import {VpnAclRules} from '../vpn-acl-rules/vpn-acl-rules';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-vpn-acl-groups',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-details-overview/vpn-details-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-details-overview/vpn-details-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-details-overview/vpn-details-overview.ts	(working copy)
@@ -4,7 +4,7 @@
 import {VpnResourceGroups} from '../vpn-resource-groups/vpn-resource-groups';
 import {VpnAclResourceGroups} from '../vpn-acl-resource-groups/vpn-acl-resource-groups';
 import {VpnHardwareId} from '../vpn-hardware-id/vpn-hardware-id';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-vpn-details-overview',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-resource-group-overview/vpn-resource-group-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-resource-group-overview/vpn-resource-group-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/vpn-resource-group-overview/vpn-resource-group-overview.ts	(working copy)
@@ -11,7 +11,7 @@
 import {
   VpnResourceGroupNetworkResourcesExcluded
 } from '../vpn-resource-group-network-resources-excluded/vpn-resource-group-network-resources-excluded';
-import {TabContainer, TabDefinition} from '../../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-vpn-resource-group-overview',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.html	(nonexistent)
@@ -1 +0,0 @@
-<p>webui works!</p>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { Webui } from './webui';
-
-describe('Webui', () => {
-  let component: Webui;
-  let fixture: ComponentFixture<Webui>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [Webui]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(Webui);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/webui/webui.ts	(nonexistent)
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-webui',
-  imports: [],
-  templateUrl: './webui.html',
-  styleUrl: './webui.scss'
-})
-export class Webui {
-
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.html	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.html	(working copy)
@@ -0,0 +1,16 @@
+<div class="tab-container">
+  <mat-tab-group
+    animationDuration="0ms"
+    [selectedIndex]="selectedTabIndex"
+    (selectedTabChange)="onTabChange($event)">
+    @for (tab of tabDefinitions; track tab.label) {
+      <mat-tab [label]="tab.label">
+        <ng-template matTabContent>
+          <div class="tab-content">
+            <ng-container *ngComponentOutlet="tab.component"></ng-container>
+          </div>
+        </ng-template>
+      </mat-tab>
+    }
+  </mat-tab-group>
+</div>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.html	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.html	(nonexistent)
@@ -1,16 +0,0 @@
-<div class="tab-container">
-  <mat-tab-group
-    animationDuration="0ms"
-    [selectedIndex]="selectedTabIndex"
-    (selectedTabChange)="onTabChange($event)">
-    @for (tab of tabDefinitions; track tab.label) {
-      <mat-tab [label]="tab.label">
-        <ng-template matTabContent>
-          <div class="tab-content">
-            <ng-container *ngComponentOutlet="tab.component"></ng-container>
-          </div>
-        </ng-template>
-      </mat-tab>
-    }
-  </mat-tab-group>
-</div>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.scss	(deleted)
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.scss	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.scss	(working copy)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.spec.ts	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.spec.ts	(working copy)
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TabContainer } from './tab-container';
+
+describe('TabContainer', () => {
+  let component: TabContainer;
+  let fixture: ComponentFixture<TabContainer>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [TabContainer]
+    })
+    .compileComponents();
+
+    fixture = TestBed.createComponent(TabContainer);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.spec.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.spec.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.spec.ts	(nonexistent)
@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { TabContainer } from './tab-container';
-
-describe('TabContainer', () => {
-  let component: TabContainer;
-  let fixture: ComponentFixture<TabContainer>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [TabContainer]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(TabContainer);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.ts	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/tab-container/tab-container.ts	(working copy)
@@ -0,0 +1,57 @@
+import {Component, OnInit, Input, Type} from '@angular/core';
+import {SharedModule} from '../../../shared/shared-module';
+import {MatTabChangeEvent} from '@angular/material/tabs';
+import {ActivatedRoute, Router} from '@angular/router';
+
+export interface TabDefinition {
+  label: string;
+  component: Type<any>;
+  paramName?: string;
+}
+
+@Component({
+  selector: 'app-tab-container',
+  imports: [SharedModule],
+  standalone: true,
+  templateUrl: './tab-container.html',
+  styleUrl: './tab-container.scss'
+})
+export class TabContainer implements OnInit {
+
+  @Input() tabDefinitions: TabDefinition[] = [];
+  @Input() paramKey: string = 'tab';
+  selectedTabIndex: number = 0;
+  private tabNames: string[] = [];
+
+  constructor(private _route: ActivatedRoute, private _router: Router) {
+  }
+
+  ngOnInit(): void {
+    this.tabNames = this.tabDefinitions.map(t => t.paramName || t.label);
+    this._route.queryParams.subscribe(params => {
+      const tabParam = params[this.paramKey];
+      if (tabParam) {
+        const index = this.tabNames.indexOf(tabParam);
+        this.selectedTabIndex = (index !== -1) ? index : 0;
+      } else {
+        this.updateQueryParams(this.selectedTabIndex);
+      }
+    });
+  }
+
+  onTabChange(event: MatTabChangeEvent): void {
+    this.selectedTabIndex = event.index;
+    this.updateQueryParams(event.index);
+  }
+
+  private updateQueryParams(tabIndex: number): void {
+    const tabName = this.tabNames[tabIndex];
+    if (tabName) {
+      this._router.navigate([], {
+        relativeTo: this._route,
+        queryParams: {[this.paramKey]: tabName},
+        queryParamsHandling: 'merge'
+      });
+    }
+  }
+}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/tab-container/tab-container.ts	(nonexistent)
@@ -1,57 +0,0 @@
-import {Component, OnInit, Input, Type, OnChanges, SimpleChanges} from '@angular/core';
-import {SharedModule} from '../../shared/shared-module';
-import {MatTabChangeEvent} from '@angular/material/tabs';
-import {ActivatedRoute, Router} from '@angular/router';
-
-export interface TabDefinition {
-  label: string;
-  component: Type<any>;
-  paramName?: string;
-}
-
-@Component({
-  selector: 'app-tab-container',
-  imports: [SharedModule],
-  standalone: true,
-  templateUrl: './tab-container.html',
-  styleUrl: './tab-container.scss'
-})
-export class TabContainer implements OnInit {
-
-  @Input() tabDefinitions: TabDefinition[] = [];
-  @Input() paramKey: string = 'tab';
-  selectedTabIndex: number = 0;
-  private tabNames: string[] = [];
-
-  constructor(private _route: ActivatedRoute, private _router: Router) {
-  }
-
-  ngOnInit(): void {
-    this.tabNames = this.tabDefinitions.map(t => t.paramName || t.label);
-    this._route.queryParams.subscribe(params => {
-      const tabParam = params[this.paramKey];
-      if (tabParam) {
-        const index = this.tabNames.indexOf(tabParam);
-        this.selectedTabIndex = (index !== -1) ? index : 0;
-      } else {
-        this.updateQueryParams(this.selectedTabIndex);
-      }
-    });
-  }
-
-  onTabChange(event: MatTabChangeEvent): void {
-    this.selectedTabIndex = event.index;
-    this.updateQueryParams(event.index);
-  }
-
-  private updateQueryParams(tabIndex: number): void {
-    const tabName = this.tabNames[tabIndex];
-    if (tabName) {
-      this._router.navigate([], {
-        relativeTo: this._route,
-        queryParams: {[this.paramKey]: tabName},
-        queryParamsHandling: 'merge'
-      });
-    }
-  }
-}
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/topology/topology.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/topology/topology.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/topology/topology.ts	(working copy)
@@ -2,7 +2,7 @@
 import {SharedModule} from '../../shared/shared-module';
 import {TopologySlbVirtualService} from '../sub-components/topology-slb-virtual-service/topology-slb-virtual-service';
 import {TopologySlbRealService} from '../sub-components/topology-slb-real-service/topology-slb-real-service';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 
 @Component({
   selector: 'app-topology',
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/volume-license-devices-overview/volume-license-devices-overview.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/volume-license-devices-overview/volume-license-devices-overview.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/volume-license-devices-overview/volume-license-devices-overview.ts	(working copy)
@@ -4,7 +4,7 @@
 import {VlManagedDevices} from '../sub-components/vl-managed-devices/vl-managed-devices';
 import {ActivatedRoute, Router} from '@angular/router';
 import {MatTabChangeEvent} from '@angular/material/tabs';
-import {TabContainer, TabDefinition} from '../tab-container/tab-container';
+import {TabContainer, TabDefinition} from '../common/tab-container/tab-container';
 import {UserManagement} from '../sub-components/user-management/user-management';
 
 @Component({
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/vpn-management/vpn-management.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/vpn-management/vpn-management.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/vpn-management/vpn-management.ts	(working copy)
@@ -42,11 +42,12 @@
   getAMPDevices() {
     this.dataSource.data = [];
     this.totalRecords = 0;
-    this._device.getAMPDevicesList()
+    this._device.getDeviceGroups()
       .pipe(take(1)).subscribe({
       next: (result: any) => {
-        if (result && result.length > 0) {
-          result.forEach((_device: any) => {
+        let devices = result.devices;
+        if (devices.length > 0) {
+          devices.forEach((_device: any) => {
             if (_device.type.toLowerCase() === 'ag' || _device.type.toLowerCase() === 'vxag') {
               this.getVpnServices(_device?.name, _device?.device_group);
             }
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/constants/api_urls.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/constants/api_urls.ts	(revision 2739)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/constants/api_urls.ts	(working copy)
@@ -2,8 +2,9 @@
 
 // These are base URLs, Query params might be added at respective services.
 export const URLS = {
-// Auth
+  // Auth
   LOGIN_URL: `${PREFIX}/login_app`,
+  GET_USER_AUTHORIZATION_URL: `${PREFIX}/api/cm/system/user_mgmt/UserAuthorization/_perform`,
   // Device
   GET_DEVICE_GROUPS_URL: `${PREFIX}/api/cm/device_mgmt/device_group/RoleDeviceGroup/_perform`,
   ADD_DEVICE_GROUP_URL: `${PREFIX}/api/cm/device_mgmt/device_group/DeviceGroup/_add`,
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/auth.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/auth.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/auth.ts	(working copy)
@@ -6,8 +6,8 @@
 import {HttpService} from './http';
 import {map} from 'rxjs/operators';
 import {URLS} from '../constants/api_urls';
-import {MatSnackBar} from '@angular/material/snack-bar';
 import {NotificationService} from './notification';
+import {MatDialog} from '@angular/material/dialog';
 
 @Injectable({
   providedIn: 'root'
@@ -60,7 +60,8 @@
     private router: Router,
     private storage: Storage,
     private _notification: NotificationService,
-    protected http: HttpService) {
+    protected http: HttpService,
+    private dialog: MatDialog,) {
 
     this.currentUserSubject = new BehaviorSubject<User | null>(null);
     this.currentUser = this.currentUserSubject.asObservable();
@@ -120,6 +121,7 @@
         : 'You have been logged out successfully.';
       this._notification.showError(msg);
     }
+    this.dialog.closeAll();
     this.router.navigate(['/login']).finally(() => {
       this.logoutInProgress = false;
     });
@@ -158,4 +160,15 @@
       resolve();
     });
   }
+
+  getUserAuthorization(username: string) {
+    const payload: any = new FormData();
+    payload.append('action', 'GetRoleByUsername');
+    payload.append('options', JSON.stringify({"username": username}));
+    return  this.http.post(URLS.GET_USER_AUTHORIZATION_URL, payload, {
+        csrf: true,
+        isFormData: true,
+        csrfInFormData: false
+      })
+  }
 }
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/device-service.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/device-service.ts	(revision 2739)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/device-service.ts	(working copy)
@@ -17,8 +17,7 @@
   }
 
   getDeviceGroups() {
-    // ToDo: Update with actual RoleId with RBAC
-    let roleId = this._storage.getItem('roleId') || "0";
+    let roleId = this._storage.getItem('roleId') || "-1";
     let rawPayload = new FormData();
     rawPayload.set('action', 'FilterRoleDeviceGroups');
     rawPayload.set('options', JSON.stringify({"role_id": roleId}));
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/notification.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/notification.ts	(revision 2738)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/notification.ts	(working copy)
@@ -1,6 +1,6 @@
 import {Injectable} from '@angular/core';
 import {MatSnackBar} from '@angular/material/snack-bar';
-import {AppNotification} from '../components/app-notification/app-notification';
+import {AppNotification} from '../components/common/app-notification/app-notification';
 
 @Injectable({
   providedIn: 'root'
@@ -15,7 +15,7 @@
   showSuccess(message: string) {
     this.snackBar.openFromComponent(AppNotification, {
       data: {message, type: 'success'},
-      duration: 3000,
+      duration: 5000,
       horizontalPosition: 'right',
       verticalPosition: 'top'
     });
@@ -24,7 +24,7 @@
   showError(message: string) {
     this.snackBar.openFromComponent(AppNotification, {
       data: {message, type: 'error'},
-      duration: 5000,
+      duration: 7000,
       horizontalPosition: 'right',
       verticalPosition: 'top'
     });
