From eb0df5d5e935b555d27b65d9e99fa765341666f4 Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Sun, 9 Apr 2023 16:36:05 -0700
Subject: [PATCH] Hide UI tour steps if user doesnt have permissions

---
 src-ui/src/app/app.component.ts            |  7 +++++++
 src-ui/src/app/guards/permissions.guard.ts | 13 +++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src-ui/src/app/app.component.ts b/src-ui/src/app/app.component.ts
index 01eac1297..e22098496 100644
--- a/src-ui/src/app/app.component.ts
+++ b/src-ui/src/app/app.component.ts
@@ -155,6 +155,7 @@ export class AppComponent implements OnInit, OnDestroy {
         content: $localize`Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.`,
         route: '/dashboard',
         enableBackdrop: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
@@ -167,6 +168,7 @@ export class AppComponent implements OnInit, OnDestroy {
         placement: 'bottom',
         enableBackdrop: true,
         disableScrollToAnchor: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
@@ -177,6 +179,7 @@ export class AppComponent implements OnInit, OnDestroy {
         route: '/documents?sort=created&reverse=1&page=1',
         placement: 'bottom',
         enableBackdrop: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
@@ -186,6 +189,7 @@ export class AppComponent implements OnInit, OnDestroy {
         content: $localize`Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.`,
         route: '/documents?sort=created&reverse=1&page=1',
         enableBackdrop: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
@@ -195,6 +199,7 @@ export class AppComponent implements OnInit, OnDestroy {
         content: $localize`Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.`,
         route: '/tags',
         enableBackdrop: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
@@ -204,6 +209,7 @@ export class AppComponent implements OnInit, OnDestroy {
         content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`,
         route: '/tasks',
         enableBackdrop: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
@@ -213,6 +219,7 @@ export class AppComponent implements OnInit, OnDestroy {
         content: $localize`Check out the settings for various tweaks to the web app, toggle settings for saved views or setup e-mail checking.`,
         route: '/settings',
         enableBackdrop: true,
+        isOptional: true,
         prevBtnTitle,
         nextBtnTitle,
         endBtnTitle,
diff --git a/src-ui/src/app/guards/permissions.guard.ts b/src-ui/src/app/guards/permissions.guard.ts
index 916408fe2..7c9b7287d 100644
--- a/src-ui/src/app/guards/permissions.guard.ts
+++ b/src-ui/src/app/guards/permissions.guard.ts
@@ -8,13 +8,15 @@ import {
 import { Injectable } from '@angular/core'
 import { PermissionsService } from '../services/permissions.service'
 import { ToastService } from '../services/toast.service'
+import { TourService } from 'ngx-ui-tour-ng-bootstrap'
 
 @Injectable()
 export class PermissionsGuard implements CanActivate {
   constructor(
     private permissionsService: PermissionsService,
     private router: Router,
-    private toastService: ToastService
+    private toastService: ToastService,
+    private tourService: TourService
   ) {}
 
   canActivate(
@@ -27,9 +29,12 @@ export class PermissionsGuard implements CanActivate {
         route.data.requiredPermission.type
       )
     ) {
-      this.toastService.showError(
-        $localize`You don't have permissions to do that`
-      )
+      // Check if tour is running 1 = TourState.ON
+      if (this.tourService.getStatus() !== 1) {
+        this.toastService.showError(
+          $localize`You don't have permissions to do that`
+        )
+      }
       return this.router.parseUrl('/dashboard')
     } else {
       return true