diff --git a/src/store/reducers/capabilities/hooks.ts b/src/store/reducers/capabilities/hooks.ts index 12a3cddc2c..359d2c9d38 100644 --- a/src/store/reducers/capabilities/hooks.ts +++ b/src/store/reducers/capabilities/hooks.ts @@ -184,3 +184,7 @@ export const useDatabasesAvailable = () => { export const useMetaLoginAvailable = () => { return useGetMetaFeatureVersion('/meta/login') >= 1; }; + +export const useMetaWhoAmIAvailable = () => { + return useGetMetaFeatureVersion('/meta/whoami') >= 1; +}; diff --git a/src/types/api/capabilities.ts b/src/types/api/capabilities.ts index 1bef50c9a2..8f26e3b54d 100644 --- a/src/types/api/capabilities.ts +++ b/src/types/api/capabilities.ts @@ -54,4 +54,5 @@ export type MetaCapability = | '/meta/delete_cluster' | '/meta/events' | '/meta/login' + | '/meta/whoami' | '/meta/databases'; diff --git a/src/utils/hooks/useMetaAuth.ts b/src/utils/hooks/useMetaAuth.ts index 504339139c..22162565e4 100644 --- a/src/utils/hooks/useMetaAuth.ts +++ b/src/utils/hooks/useMetaAuth.ts @@ -1,24 +1,28 @@ import {useLocation} from 'react-router-dom'; import {checkIsClustersPage} from '../../routes'; -import {useMetaLoginAvailable} from '../../store/reducers/capabilities/hooks'; +import { + useMetaLoginAvailable, + useMetaWhoAmIAvailable, +} from '../../store/reducers/capabilities/hooks'; function useMetaAuthState() { const location = useLocation(); const isClustersPage = checkIsClustersPage(location.pathname); const metaLoginAvailable = useMetaLoginAvailable(); + const metaWhoAmIAvailable = useMetaWhoAmIAvailable(); - return {isClustersPage, metaLoginAvailable}; + return {isClustersPage, metaAuthAvailable: metaLoginAvailable && metaWhoAmIAvailable}; } export function useMetaAuth() { - const {isClustersPage, metaLoginAvailable} = useMetaAuthState(); + const {isClustersPage, metaAuthAvailable} = useMetaAuthState(); - return isClustersPage && metaLoginAvailable; + return isClustersPage && metaAuthAvailable; } export function useMetaAuthUnavailable() { - const {isClustersPage, metaLoginAvailable} = useMetaAuthState(); + const {isClustersPage, metaAuthAvailable} = useMetaAuthState(); - return isClustersPage && !metaLoginAvailable; + return isClustersPage && !metaAuthAvailable; }