Require permissions in home section

This commit is contained in:
dominik-zeglen 2019-10-08 16:19:24 +02:00
parent 9f08550b34
commit 3c2a41a185
3 changed files with 150 additions and 115 deletions

View file

@ -14,7 +14,10 @@ import KeyboardArrowRight from "@material-ui/icons/KeyboardArrowRight";
import React from "react"; import React from "react";
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from "react-intl";
import RequirePermissions from "@saleor/components/RequirePermissions";
import Skeleton from "@saleor/components/Skeleton"; import Skeleton from "@saleor/components/Skeleton";
import { UserPermissionProps } from "@saleor/types";
import { PermissionEnum } from "@saleor/types/globalTypes";
const styles = (theme: Theme) => const styles = (theme: Theme) =>
createStyles({ createStyles({
@ -26,7 +29,7 @@ const styles = (theme: Theme) =>
} }
}); });
interface HomeNotificationTableProps extends WithStyles<typeof styles> { interface HomeNotificationTableProps extends UserPermissionProps {
ordersToCapture: number; ordersToCapture: number;
ordersToFulfill: number; ordersToFulfill: number;
productsOutOfStock: number; productsOutOfStock: number;
@ -45,11 +48,16 @@ const HomeNotificationTable = withStyles(styles, {
onProductsOutOfStockClick, onProductsOutOfStockClick,
ordersToCapture, ordersToCapture,
ordersToFulfill, ordersToFulfill,
productsOutOfStock productsOutOfStock,
}: HomeNotificationTableProps) => ( userPermissions
}: HomeNotificationTableProps & WithStyles<typeof styles>) => (
<Card> <Card>
<Table> <Table>
<TableBody className={classes.tableRow}> <TableBody className={classes.tableRow}>
<RequirePermissions
userPermissions={userPermissions}
requiredPermissions={[PermissionEnum.MANAGE_ORDERS]}
>
<TableRow hover={true} onClick={onOrdersToFulfillClick}> <TableRow hover={true} onClick={onOrdersToFulfillClick}>
<TableCell> <TableCell>
{ordersToFulfill === undefined ? ( {ordersToFulfill === undefined ? (
@ -110,6 +118,11 @@ const HomeNotificationTable = withStyles(styles, {
<KeyboardArrowRight /> <KeyboardArrowRight />
</TableCell> </TableCell>
</TableRow> </TableRow>
</RequirePermissions>
<RequirePermissions
userPermissions={userPermissions}
requiredPermissions={[PermissionEnum.MANAGE_PRODUCTS]}
>
<TableRow hover={true} onClick={onProductsOutOfStockClick}> <TableRow hover={true} onClick={onProductsOutOfStockClick}>
<TableCell> <TableCell>
{productsOutOfStock === undefined ? ( {productsOutOfStock === undefined ? (
@ -140,6 +153,7 @@ const HomeNotificationTable = withStyles(styles, {
<KeyboardArrowRight /> <KeyboardArrowRight />
</TableCell> </TableCell>
</TableRow> </TableRow>
</RequirePermissions>
</TableBody> </TableBody>
</Table> </Table>
</Card> </Card>

View file

@ -10,7 +10,10 @@ import CardSpacer from "@saleor/components/CardSpacer";
import Container from "@saleor/components/Container"; import Container from "@saleor/components/Container";
import Grid from "@saleor/components/Grid"; import Grid from "@saleor/components/Grid";
import Money from "@saleor/components/Money"; import Money from "@saleor/components/Money";
import RequirePermissions from "@saleor/components/RequirePermissions";
import Skeleton from "@saleor/components/Skeleton"; import Skeleton from "@saleor/components/Skeleton";
import { UserPermissionProps } from "@saleor/types";
import { PermissionEnum } from "@saleor/types/globalTypes";
import Orders from "../../../icons/Orders"; import Orders from "../../../icons/Orders";
import Sales from "../../../icons/Sales"; import Sales from "../../../icons/Sales";
import { import {
@ -39,7 +42,7 @@ const styles = (theme: Theme) =>
} }
}); });
export interface HomePageProps extends WithStyles<typeof styles> { export interface HomePageProps extends UserPermissionProps {
activities: Home_activities_edges_node[]; activities: Home_activities_edges_node[];
orders: number; orders: number;
ordersToCapture: number; ordersToCapture: number;
@ -68,13 +71,18 @@ const HomePage = withStyles(styles, { name: "HomePage" })(
onProductsOutOfStockClick, onProductsOutOfStockClick,
ordersToCapture, ordersToCapture,
ordersToFulfill, ordersToFulfill,
productsOutOfStock productsOutOfStock,
}: HomePageProps) => ( userPermissions
}: HomePageProps & WithStyles<typeof styles>) => (
<Container> <Container>
<HomeHeader userName={userName} /> <HomeHeader userName={userName} />
<CardSpacer /> <CardSpacer />
<Grid> <Grid>
<div> <div>
<RequirePermissions
userPermissions={userPermissions}
requiredPermissions={[PermissionEnum.MANAGE_ORDERS]}
>
<div className={classes.cardContainer}> <div className={classes.cardContainer}>
<HomeAnalyticsCard <HomeAnalyticsCard
title={"Sales"} title={"Sales"}
@ -97,6 +105,7 @@ const HomePage = withStyles(styles, { name: "HomePage" })(
)} )}
</HomeAnalyticsCard> </HomeAnalyticsCard>
</div> </div>
</RequirePermissions>
<HomeNotificationTable <HomeNotificationTable
onOrdersToCaptureClick={onOrdersToCaptureClick} onOrdersToCaptureClick={onOrdersToCaptureClick}
onOrdersToFulfillClick={onOrdersToFulfillClick} onOrdersToFulfillClick={onOrdersToFulfillClick}
@ -104,16 +113,27 @@ const HomePage = withStyles(styles, { name: "HomePage" })(
ordersToCapture={ordersToCapture} ordersToCapture={ordersToCapture}
ordersToFulfill={ordersToFulfill} ordersToFulfill={ordersToFulfill}
productsOutOfStock={productsOutOfStock} productsOutOfStock={productsOutOfStock}
userPermissions={userPermissions}
/> />
<CardSpacer /> <CardSpacer />
<RequirePermissions
userPermissions={userPermissions}
requiredPermissions={[PermissionEnum.MANAGE_ORDERS]}
>
<HomeProductListCard <HomeProductListCard
onRowClick={onProductClick} onRowClick={onProductClick}
topProducts={topProducts} topProducts={topProducts}
/> />
<CardSpacer /> <CardSpacer />
</RequirePermissions>
</div> </div>
<div> <div>
<RequirePermissions
userPermissions={userPermissions}
requiredPermissions={[PermissionEnum.MANAGE_ORDERS]}
>
<HomeActivityCard activities={activities} /> <HomeActivityCard activities={activities} />
</RequirePermissions>
</div> </div>
</Grid> </Grid>
</Container> </Container>

View file

@ -56,6 +56,7 @@ const HomeSection = () => {
ordersToFulfill={maybe(() => data.ordersToFulfill.totalCount)} ordersToFulfill={maybe(() => data.ordersToFulfill.totalCount)}
productsOutOfStock={maybe(() => data.productsOutOfStock.totalCount)} productsOutOfStock={maybe(() => data.productsOutOfStock.totalCount)}
userName={getUserName(user, true)} userName={getUserName(user, true)}
userPermissions={maybe(() => user.permissions, [])}
/> />
)} )}
</HomePageQuery> </HomePageQuery>