From 13e9530593dd83f35b9f5f0d34f1d13fb9039526 Mon Sep 17 00:00:00 2001
From: Ruben van Leeuwen <ruben.vanleeuwen@surf.nl>
Date: Tue, 14 May 2024 11:26:35 +0200
Subject: [PATCH 1/4] 1077: Check graphql response for not_authorized errors
 and signout

---
 .../orchestrator-ui-components/src/rtk/api.ts | 20 ++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/packages/orchestrator-ui-components/src/rtk/api.ts b/packages/orchestrator-ui-components/src/rtk/api.ts
index e24bc91ab..1579eae2e 100644
--- a/packages/orchestrator-ui-components/src/rtk/api.ts
+++ b/packages/orchestrator-ui-components/src/rtk/api.ts
@@ -1,4 +1,4 @@
-import { getSession } from 'next-auth/react';
+import { getSession, signOut } from 'next-auth/react';
 
 import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
 import { graphqlRequestBaseQuery } from '@rtk-query/graphql-request-base-query';
@@ -85,6 +85,24 @@ export const orchestratorApi = createApi({
                 const graphqlFn = graphqlRequestBaseQuery({
                     url: customApi ? customApi.apiBaseUrl : graphqlEndpointCore,
                     prepareHeaders,
+                    customErrors: (error) => {
+                        const { name, message, stack, response } = error;
+                        if (
+                            response &&
+                            response.errors &&
+                            response.errors.length > 0
+                        ) {
+                            response.errors.map((error) => {
+                                if (
+                                    error.extensions?.error_type ===
+                                    'not_authorized'
+                                ) {
+                                    signOut();
+                                }
+                            });
+                        }
+                        return { name, message, stack };
+                    },
                 });
                 return graphqlFn(args, api, {});
         }

From 14016d2074912bfa0c14e8540cbc043f1e957740 Mon Sep 17 00:00:00 2001
From: Ruben van Leeuwen <ruben.vanleeuwen@surf.nl>
Date: Tue, 14 May 2024 12:18:44 +0200
Subject: [PATCH 2/4] 1077: Add component that checks for session on every page
 change when auth is active

---
 apps/wfo-ui                                   |  2 +-
 .../WfoRouteChangeListener.tsx                | 22 +++++++++++++++++++
 .../WfoRouteChangeListener/index.tsx          |  1 +
 .../src/components/index.ts                   |  1 +
 4 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/WfoRouteChangeListener.tsx
 create mode 100644 packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/index.tsx

diff --git a/apps/wfo-ui b/apps/wfo-ui
index 854d788c7..bcd4c58a8 160000
--- a/apps/wfo-ui
+++ b/apps/wfo-ui
@@ -1 +1 @@
-Subproject commit 854d788c7a8acce956d3892163a80655c9bb1c1f
+Subproject commit bcd4c58a87bcdd04f31f7acc07f94c648402b518
diff --git a/packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/WfoRouteChangeListener.tsx b/packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/WfoRouteChangeListener.tsx
new file mode 100644
index 000000000..2691a08ae
--- /dev/null
+++ b/packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/WfoRouteChangeListener.tsx
@@ -0,0 +1,22 @@
+import React, { useEffect } from 'react';
+
+import { getSession, signOut } from 'next-auth/react';
+import { useRouter } from 'next/router';
+
+import { useGetOrchestratorConfig } from '@/hooks';
+
+export const WfoRouteChangeListener = () => {
+    const router = useRouter();
+    const { authActive } = useGetOrchestratorConfig();
+
+    useEffect(() => {
+        if (authActive) {
+            getSession().then((session) => {
+                if (!session) {
+                    signOut();
+                }
+            });
+        }
+    }, [authActive, router]);
+    return <></>;
+};
diff --git a/packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/index.tsx b/packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/index.tsx
new file mode 100644
index 000000000..1c628f76d
--- /dev/null
+++ b/packages/orchestrator-ui-components/src/components/WfoRouteChangeListener/index.tsx
@@ -0,0 +1 @@
+export * from './WfoRouteChangeListener';
diff --git a/packages/orchestrator-ui-components/src/components/index.ts b/packages/orchestrator-ui-components/src/components/index.ts
index 995aeee49..5b0aad79d 100644
--- a/packages/orchestrator-ui-components/src/components/index.ts
+++ b/packages/orchestrator-ui-components/src/components/index.ts
@@ -28,3 +28,4 @@ export * from './WfoNoResults';
 export * from './WfoStartButton';
 export * from './WfoSubscriptionsList';
 export * from './WfoSummary';
+export * from './WfoRouteChangeListener';

From 064393ae20f9362ce8dfa888f052581b562df5ac Mon Sep 17 00:00:00 2001
From: Ruben van Leeuwen <ruben.vanleeuwen@surf.nl>
Date: Tue, 14 May 2024 12:21:13 +0200
Subject: [PATCH 3/4] 1077: Add changeset

---
 .changeset/spicy-olives-itch.md | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 .changeset/spicy-olives-itch.md

diff --git a/.changeset/spicy-olives-itch.md b/.changeset/spicy-olives-itch.md
new file mode 100644
index 000000000..73a30f5b6
--- /dev/null
+++ b/.changeset/spicy-olives-itch.md
@@ -0,0 +1,5 @@
+---
+"@orchestrator-ui/orchestrator-ui-components": minor
+---
+
+Signs user out when api calls fail because of expired token

From 3c746b015fe7798d1d2526b3fa488cf35e10ba4a Mon Sep 17 00:00:00 2001
From: Ruben van Leeuwen <ruben.vanleeuwen@surf.nl>
Date: Tue, 14 May 2024 15:44:36 +0200
Subject: [PATCH 4/4] 1077: PR comments

---
 apps/wfo-ui                                        | 2 +-
 packages/orchestrator-ui-components/src/rtk/api.ts | 7 ++-----
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/apps/wfo-ui b/apps/wfo-ui
index bcd4c58a8..6999cb6bb 160000
--- a/apps/wfo-ui
+++ b/apps/wfo-ui
@@ -1 +1 @@
-Subproject commit bcd4c58a87bcdd04f31f7acc07f94c648402b518
+Subproject commit 6999cb6bb154f6bb624ad9461ea8ee611b89ddf7
diff --git a/packages/orchestrator-ui-components/src/rtk/api.ts b/packages/orchestrator-ui-components/src/rtk/api.ts
index 1579eae2e..57aae71c9 100644
--- a/packages/orchestrator-ui-components/src/rtk/api.ts
+++ b/packages/orchestrator-ui-components/src/rtk/api.ts
@@ -87,12 +87,9 @@ export const orchestratorApi = createApi({
                     prepareHeaders,
                     customErrors: (error) => {
                         const { name, message, stack, response } = error;
-                        if (
-                            response &&
-                            response.errors &&
-                            response.errors.length > 0
-                        ) {
+                        if (response?.errors && response.errors?.length > 0) {
                             response.errors.map((error) => {
+                                // TODO: https://github.com/workfloworchestrator/orchestrator-ui-library/issues/1105
                                 if (
                                     error.extensions?.error_type ===
                                     'not_authorized'