diff --git a/.env.example b/.env.example index ce5f17913124ad997e6af938e3ac9a0e5bc6a56d..c32c7c4c8823ca6cc797fa21257da451eacfdd22 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 29cc3c5c6849c1a5562b74ef3e4bab4c0fc09b60..9428ec880ec5a6c0b7ce2d2d8aaac553c0bdaa96 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 ( <>