From 089af3880a8d4864a5a22fd989439a91c8258745 Mon Sep 17 00:00:00 2001 From: memeriau Date: Tue, 12 Apr 2022 23:51:16 +0200 Subject: [PATCH] add HOC for role restriction --- .../TeamAssignment/TeamsWithCandidates.tsx | 3 ++- src/routes/index.ts | 2 +- src/utils/withUserRole.tsx | 12 ++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 src/utils/withUserRole.tsx diff --git a/src/components/TeamAssignment/TeamsWithCandidates.tsx b/src/components/TeamAssignment/TeamsWithCandidates.tsx index bd52c66..643c283 100644 --- a/src/components/TeamAssignment/TeamsWithCandidates.tsx +++ b/src/components/TeamAssignment/TeamsWithCandidates.tsx @@ -3,6 +3,7 @@ import { useSelector } from "react-redux" import { selectTeamList } from "../../store/teamList" import TeamWithCandidates from "./TeamWithCandidates" import styles from "./styles.module.scss" +import withUserRole from "../../utils/withUserRole" const TeamsWithCandidates: FC = (): JSX.Element => { const teams = useSelector(selectTeamList) @@ -25,4 +26,4 @@ const TeamsWithCandidates: FC = (): JSX.Element => { ) } -export default memo(TeamsWithCandidates) +export default withUserRole("répartiteur", memo(TeamsWithCandidates)) diff --git a/src/routes/index.ts b/src/routes/index.ts index 24dba71..6ba47d3 100755 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -86,7 +86,7 @@ export default [ loadData: loadAnnouncementsData, }, { - path: "/team-assign-e26as", + path: "/team-assign", component: AsyncTeamAssignment, loadData: loadTeamAssignmentData, }, diff --git a/src/utils/withUserRole.tsx b/src/utils/withUserRole.tsx new file mode 100644 index 0000000..cf258a3 --- /dev/null +++ b/src/utils/withUserRole.tsx @@ -0,0 +1,12 @@ +import React from "react" +import { useSelector } from "react-redux" +import { selectUserRoles } from "../store/auth" + +function withUserRole(requiredRole: string, Component: React.ComponentType) { + return (props: T): JSX.Element | null => { + const roles = useSelector(selectUserRoles) + return roles.includes(requiredRole) ? : null + } +} + +export default withUserRole