From 320ccef22ae820e51091725438be3e3e48c8859b Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Tue, 18 Mar 2025 13:32:59 -0600
Subject: [PATCH] move

---
 .../shared/guards/network.guard.ts            |  0
 .../shared/services/auth.service.ts           | 28 ++++++++++++++-----
 2 files changed, 21 insertions(+), 7 deletions(-)
 rename projects/nshmp-apps/src/{app/internal => }/shared/guards/network.guard.ts (100%)
 rename projects/nshmp-apps/src/{app/internal => }/shared/services/auth.service.ts (59%)

diff --git a/projects/nshmp-apps/src/app/internal/shared/guards/network.guard.ts b/projects/nshmp-apps/src/shared/guards/network.guard.ts
similarity index 100%
rename from projects/nshmp-apps/src/app/internal/shared/guards/network.guard.ts
rename to projects/nshmp-apps/src/shared/guards/network.guard.ts
diff --git a/projects/nshmp-apps/src/app/internal/shared/services/auth.service.ts b/projects/nshmp-apps/src/shared/services/auth.service.ts
similarity index 59%
rename from projects/nshmp-apps/src/app/internal/shared/services/auth.service.ts
rename to projects/nshmp-apps/src/shared/services/auth.service.ts
index 7a39e67e4..4ad61d7f0 100644
--- a/projects/nshmp-apps/src/app/internal/shared/services/auth.service.ts
+++ b/projects/nshmp-apps/src/shared/services/auth.service.ts
@@ -1,8 +1,13 @@
 import {HttpClient} from '@angular/common/http';
 import {Injectable} from '@angular/core';
-import {NshmpService, SpinnerService} from '@ghsc/nshmp-lib-ng/nshmp';
+import {MatDialogRef} from '@angular/material/dialog';
+import {
+  NshmpLibNgSpinnerComponent,
+  NshmpService,
+  SpinnerService,
+} from '@ghsc/nshmp-lib-ng/nshmp';
 import {environment} from 'projects/nshmp-apps/src/environments/environment';
-import {catchError, map} from 'rxjs';
+import {catchError, map, Observable} from 'rxjs';
 
 interface AuthResponse {
   isAuthorized: boolean;
@@ -24,14 +29,23 @@ export class AuthService {
     private nshmpService: NshmpService,
   ) {}
 
-  isAuthorized() {
-    const ref = this.spinnerService.show('Checking USGS network ...');
+  /**
+   * Check if user is on USGS network for internal applications.
+   *
+   * @param required Whether the user must be on the network
+   */
+  isAuthorized(required = true): Observable<boolean> {
+    let ref: MatDialogRef<NshmpLibNgSpinnerComponent> | undefined = undefined;
+
+    if (required) {
+      ref = this.spinnerService.show('Checking USGS network ...');
+    }
 
     return this.http.get<AuthResponse>(this.url).pipe(
       map(response => {
-        ref.close();
+        ref?.close();
 
-        if (!response.isAuthorized) {
+        if (!response.isAuthorized && required) {
           this.nshmpService.throwError$(
             new Error(
               'Must be on USGS network to access internal applications',
@@ -42,7 +56,7 @@ export class AuthService {
         return response.isAuthorized;
       }),
       catchError((error: Error) => {
-        ref.close();
+        ref?.close();
         return this.nshmpService.throwError$(error);
       }),
     );
-- 
GitLab