diff --git a/client/src/core/client/admin/App/Navigation/NavigationContainer.tsx b/client/src/core/client/admin/App/Navigation/NavigationContainer.tsx index 3efcdd26c8..8141bb8621 100644 --- a/client/src/core/client/admin/App/Navigation/NavigationContainer.tsx +++ b/client/src/core/client/admin/App/Navigation/NavigationContainer.tsx @@ -2,12 +2,14 @@ import React, { FunctionComponent } from "react"; import { graphql } from "react-relay"; import { Ability, can } from "coral-admin/permissions/tenant"; +import { GQLUSER_ROLE } from "coral-common/client/src/core/client/framework/schema/__generated__/types"; import { useLocal, withFragmentContainer } from "coral-framework/lib/relay"; import { SignOutMutation, withSignOutMutation, } from "coral-framework/mutations"; +import { NavigationContainer_settings as SettingsData } from "coral-admin/__generated__/NavigationContainer_settings.graphql"; import { NavigationContainer_viewer as ViewerData } from "coral-admin/__generated__/NavigationContainer_viewer.graphql"; import { NavigationContainerLocal } from "coral-admin/__generated__/NavigationContainerLocal.graphql"; @@ -16,9 +18,13 @@ import Navigation from "./Navigation"; interface Props { signOut: SignOutMutation; viewer: ViewerData | null; + settings: SettingsData | null; } -const NavigationContainer: FunctionComponent = ({ viewer }) => { +const NavigationContainer: FunctionComponent = ({ + viewer, + settings, +}) => { const [{ dsaFeaturesEnabled }] = useLocal( graphql` fragment NavigationContainerLocal on Local { @@ -30,7 +36,19 @@ const NavigationContainer: FunctionComponent = ({ viewer }) => { ); }; @@ -40,6 +58,16 @@ const enhanced = withSignOutMutation( viewer: graphql` fragment NavigationContainer_viewer on User { role + moderationScopes { + sites { + id + } + } + } + `, + settings: graphql` + fragment NavigationContainer_settings on Settings { + multisite } `, })(NavigationContainer) diff --git a/client/src/core/client/admin/permissions/tenant.ts b/client/src/core/client/admin/permissions/tenant.ts index a8a1d2a0d4..9be5b10d83 100644 --- a/client/src/core/client/admin/permissions/tenant.ts +++ b/client/src/core/client/admin/permissions/tenant.ts @@ -5,7 +5,8 @@ import { PermissionMap } from "./types"; export type AbilityType = | "CHANGE_CONFIGURATION" | "INVITE_USERS" - | "VIEW_STATISTICS"; + | "VIEW_STATISTICS" + | "MODERATE_DSA_REPORTS"; interface PermissionContext { TODO: never; } @@ -21,6 +22,10 @@ const permissionMap: PermissionMap = { [GQLUSER_ROLE.ADMIN]: () => true, [GQLUSER_ROLE.MODERATOR]: () => true, }, + MODERATE_DSA_REPORTS: { + [GQLUSER_ROLE.ADMIN]: () => true, + [GQLUSER_ROLE.MODERATOR]: () => true, + }, }; export const Ability = mapValues(permissionMap, (_, key) => key) as {