From b2438c4fdf9655a32f74c469b3a06a8de2fa6159 Mon Sep 17 00:00:00 2001 From: canove Date: Thu, 14 Jan 2021 06:55:44 -0300 Subject: [PATCH] improvement: hide some elements base on user profile --- frontend/src/accessRules.js | 9 +++- frontend/src/components/Can/index.js | 2 +- .../src/components/TicketOptionsMenu/index.js | 18 +++++-- .../src/components/TicketsManager/index.js | 2 +- frontend/src/components/UserModal/index.js | 50 ++++++++++++------- frontend/src/context/Auth/AuthContext.js | 11 +++- frontend/src/layout/MainListItems.js | 2 +- frontend/src/pages/Contacts/index.js | 25 ++++++---- 8 files changed, 83 insertions(+), 36 deletions(-) diff --git a/frontend/src/accessRules.js b/frontend/src/accessRules.js index e282def..423bb03 100644 --- a/frontend/src/accessRules.js +++ b/frontend/src/accessRules.js @@ -4,7 +4,14 @@ const rules = { }, admin: { - static: ["drawer-admin-items:view", "tickets-manager:showall"], + static: [ + "drawer-admin-items:view", + "tickets-manager:showall", + "user-modal:editProfile", + "user-modal:editQueues", + "ticket-options:deleteTicket", + "contacts-page:deleteContact", + ], }, }; diff --git a/frontend/src/components/Can/index.js b/frontend/src/components/Can/index.js index 96837c5..9d9e27a 100644 --- a/frontend/src/components/Can/index.js +++ b/frontend/src/components/Can/index.js @@ -36,4 +36,4 @@ Can.defaultProps = { no: () => null, }; -export default Can; +export { Can }; diff --git a/frontend/src/components/TicketOptionsMenu/index.js b/frontend/src/components/TicketOptionsMenu/index.js index 48d1035..457684b 100644 --- a/frontend/src/components/TicketOptionsMenu/index.js +++ b/frontend/src/components/TicketOptionsMenu/index.js @@ -1,4 +1,4 @@ -import React, { useEffect, useRef, useState } from "react"; +import React, { useContext, useEffect, useRef, useState } from "react"; import MenuItem from "@material-ui/core/MenuItem"; import Menu from "@material-ui/core/Menu"; @@ -8,11 +8,14 @@ import api from "../../services/api"; import ConfirmationModal from "../ConfirmationModal"; import TransferTicketModal from "../TransferTicketModal"; import toastError from "../../errors/toastError"; +import { Can } from "../Can"; +import { AuthContext } from "../../context/Auth/AuthContext"; const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => { const [confirmationOpen, setConfirmationOpen] = useState(false); const [transferTicketModalOpen, setTransferTicketModalOpen] = useState(false); const isMounted = useRef(true); + const { user } = useContext(AuthContext); useEffect(() => { return () => { @@ -62,9 +65,16 @@ const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => { open={menuOpen} onClose={handleClose} > - - {i18n.t("ticketOptionsMenu.delete")} - + ( + + {i18n.t("ticketOptionsMenu.delete")} + + )} + /> + {i18n.t("ticketOptionsMenu.transfer")} diff --git a/frontend/src/components/TicketsManager/index.js b/frontend/src/components/TicketsManager/index.js index 3471742..691c906 100644 --- a/frontend/src/components/TicketsManager/index.js +++ b/frontend/src/components/TicketsManager/index.js @@ -18,7 +18,7 @@ import TabPanel from "../TabPanel"; import { i18n } from "../../translate/i18n"; import { AuthContext } from "../../context/Auth/AuthContext"; -import Can from "../Can"; +import { Can } from "../Can"; import TicketsQueueSelect from "../TicketsQueueSelect"; import { Button } from "@material-ui/core"; import { useLocalStorage } from "../../hooks/useLocalStorage"; diff --git a/frontend/src/components/UserModal/index.js b/frontend/src/components/UserModal/index.js index b1539c8..3eaf108 100644 --- a/frontend/src/components/UserModal/index.js +++ b/frontend/src/components/UserModal/index.js @@ -23,6 +23,7 @@ import { i18n } from "../../translate/i18n"; import api from "../../services/api"; import toastError from "../../errors/toastError"; import QueueSelect from "../QueueSelect"; +import { Can } from "../Can"; const useStyles = makeStyles(theme => ({ root: { @@ -182,25 +183,40 @@ const UserModal = ({ open, onClose, userId }) => { className={classes.formControl} margin="dense" > - - {i18n.t("userModal.form.profile")} - - - Admin - User - + ( + <> + + {i18n.t("userModal.form.profile")} + + + + Admin + User + + + )} + /> - setSelectedQueueIds(values)} + ( + setSelectedQueueIds(values)} + /> + )} /> diff --git a/frontend/src/context/Auth/AuthContext.js b/frontend/src/context/Auth/AuthContext.js index 87bd9ae..a2ea303 100644 --- a/frontend/src/context/Auth/AuthContext.js +++ b/frontend/src/context/Auth/AuthContext.js @@ -5,11 +5,18 @@ import useAuth from "./useAuth"; const AuthContext = createContext(); const AuthProvider = ({ children }) => { - const { loading, user, isAuth, handleLogin, handleLogout } = useAuth(); + const { + loading, + user, + setUser, + isAuth, + handleLogin, + handleLogout, + } = useAuth(); return ( {children} diff --git a/frontend/src/layout/MainListItems.js b/frontend/src/layout/MainListItems.js index e191272..e8e68b2 100644 --- a/frontend/src/layout/MainListItems.js +++ b/frontend/src/layout/MainListItems.js @@ -18,7 +18,7 @@ import AccountTreeOutlinedIcon from "@material-ui/icons/AccountTreeOutlined"; import { i18n } from "../translate/i18n"; import { WhatsAppsContext } from "../context/WhatsApp/WhatsAppsContext"; import { AuthContext } from "../context/Auth/AuthContext"; -import Can from "../components/Can"; +import { Can } from "../components/Can"; function ListItemLink(props) { const { icon, primary, to, className } = props; diff --git a/frontend/src/pages/Contacts/index.js b/frontend/src/pages/Contacts/index.js index de3f5f8..d4204d7 100644 --- a/frontend/src/pages/Contacts/index.js +++ b/frontend/src/pages/Contacts/index.js @@ -33,6 +33,7 @@ import MainHeaderButtonsWrapper from "../../components/MainHeaderButtonsWrapper" import MainContainer from "../../components/MainContainer"; import toastError from "../../errors/toastError"; import { AuthContext } from "../../context/Auth/AuthContext"; +import { Can } from "../../components/Can"; const reducer = (state, action) => { if (action.type === "LOAD_CONTACTS") { @@ -318,15 +319,21 @@ const Contacts = () => { > - { - setConfirmOpen(true); - setDeletingContact(contact); - }} - > - - + ( + { + setConfirmOpen(true); + setDeletingContact(contact); + }} + > + + + )} + /> ))}