From 45a9033299493eab228d87a0bba877f3b458ff24 Mon Sep 17 00:00:00 2001
From: Luka Radenovic <luka@init.hr>
Date: Wed, 13 Jul 2022 14:32:34 +0200
Subject: [PATCH] Fix logout link to be dynamically generated

---
 .env.example                     |  1 -
 src/components/Header/Header.tsx | 14 ++++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/.env.example b/.env.example
index ce5f1791..c32c7c4c 100644
--- a/.env.example
+++ b/.env.example
@@ -1,2 +1 @@
 REACT_APP_API_URL=http://stackspin_proxy:8081/api/v1
-REACT_APP_HYDRA_PUBLIC_URL=https://sso.init.stackspin.net
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index 29cc3c5c..9428ec88 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -1,4 +1,4 @@
-import React, { Fragment, useState } from 'react';
+import React, { Fragment, useMemo, useState } from 'react';
 import { Disclosure, Menu, Transition } from '@headlessui/react';
 import { MenuIcon, XIcon } from '@heroicons/react/outline';
 import { useAuth } from 'src/services/auth';
@@ -26,8 +26,6 @@ function filterNavigationByDashboardRole(isAdmin: boolean) {
   return navigation.filter((item) => !item.requiresAdmin);
 }
 
-const HYDRA_URL = process.env.REACT_APP_HYDRA_PUBLIC_URL;
-
 // eslint-disable-next-line @typescript-eslint/no-empty-interface
 interface HeaderProps {}
 
@@ -50,7 +48,15 @@ const Header: React.FC<HeaderProps> = () => {
 
   const navigationItems = filterNavigationByDashboardRole(isAdmin);
 
-  const signOutUrl = `${HYDRA_URL}/oauth2/sessions/logout`;
+  // eslint-disable-next-line react-hooks/exhaustive-deps
+  const signOutUrl = useMemo(() => {
+    const { hostname } = window.location;
+    // If we are developing locally, we need to use the init cluster's public URL
+    if (hostname === 'localhost') {
+      return `https://sso.init.stackspin.net/oauth2/sessions/logout`;
+    }
+    return `https://sso.${hostname.replace('dashboard', '')}/oauth2/sessions/logout`;
+  }, []);
 
   return (
     <>
-- 
GitLab