From d767029efb86601383c28a544e8a8de330ba53c9 Mon Sep 17 00:00:00 2001 From: John OHara Date: Tue, 6 Feb 2024 10:41:48 +0000 Subject: [PATCH] Show daatstore config for managers in Admin tab: Fixes #1275 --- horreum-web/src/App.tsx | 5 +++-- horreum-web/src/auth.tsx | 4 ++++ horreum-web/src/domain/admin/Admin.tsx | 31 +++++++++++++++++++++----- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/horreum-web/src/App.tsx b/horreum-web/src/App.tsx index f7722969a..781975209 100644 --- a/horreum-web/src/App.tsx +++ b/horreum-web/src/App.tsx @@ -22,7 +22,7 @@ import { import {Provider, useSelector} from "react-redux" import store from "./store" -import {isAdminSelector, LoginLogout} from "./auth" +import {isAdminSelector, isManagerSelector, LoginLogout} from "./auth" import {initKeycloak} from "./keycloak" import {UserProfileLink, UserSettings} from "./domain/user/UserSettings" @@ -92,6 +92,7 @@ export default function App() { function Main() { const isAdmin = useSelector(isAdminSelector) + const isManager = useSelector(isManagerSelector) return ( @@ -120,7 +121,7 @@ function Main() { Reports - {isAdmin && ( + { (isAdmin || isManager) && ( Administration diff --git a/horreum-web/src/auth.tsx b/horreum-web/src/auth.tsx index 6f27f0053..b49597988 100644 --- a/horreum-web/src/auth.tsx +++ b/horreum-web/src/auth.tsx @@ -111,6 +111,10 @@ export const isAdminSelector = (state: State) => { return state.auth.roles.includes("admin") } +export const isManagerSelector = (state: State) => { + return managedTeamsSelector(state).length > 0 +} + export const teamsSelector = (state: State): string[] => { return state.auth.teams } diff --git a/horreum-web/src/domain/admin/Admin.tsx b/horreum-web/src/domain/admin/Admin.tsx index cf5ee865d..b68490af3 100644 --- a/horreum-web/src/domain/admin/Admin.tsx +++ b/horreum-web/src/domain/admin/Admin.tsx @@ -1,8 +1,8 @@ -import { useRef } from "react" -import { Card, CardBody, PageSection } from "@patternfly/react-core" +import {useRef} from "react" +import {Card, CardBody, NavItem, PageSection} from "@patternfly/react-core" -import SavedTabs, { SavedTab, TabFunctions, saveFunc, resetFunc, modifiedFunc } from "../../components/SavedTabs" -import { FragmentTab } from "../../components/FragmentTabs" +import SavedTabs, {SavedTab, TabFunctions, saveFunc, resetFunc, modifiedFunc} from "../../components/SavedTabs" +import FragmentTabs, {FragmentTab} from "../../components/FragmentTabs" import AllowedSiteList from "../actions/AllowedSiteList" import ActionList from "../actions/ActionList" import BannerConfig from "./BannerConfig" @@ -10,13 +10,19 @@ import Notifications from "./Notifications" import Teams from "./Teams" import Administrators from "./Administrators" import {useSelector} from "react-redux"; -import {isAdminSelector} from "../../auth"; +import {isAdminSelector, isManagerSelector} from "../../auth"; import Datastores from "./Datastores"; +import {NavLink} from "react-router-dom"; +import DatasetData from "../runs/DatasetData"; +import RunData from "../runs/RunData"; +import MetaData from "../runs/MetaData"; export default function Admin() { const adminFuncsRef = useRef() const teamsFuncsRef = useRef() const isAdmin = useSelector(isAdminSelector) + const isManager = useSelector(isManagerSelector) + if (isAdmin) { return ( @@ -60,6 +66,21 @@ export default function Admin() { ) + } else if (isManager) { + return ( + + + + + + + + + + + + ) + } else { return (