From e2de5eba40b0f6b344594d024f8b6ff75290d487 Mon Sep 17 00:00:00 2001 From: pramod mahajan Date: Wed, 3 Sep 2025 11:52:49 +0530 Subject: [PATCH] added document permissions --- src/components/Documents/Documents.jsx | 9 ++-- src/components/Documents/DocumentsList.jsx | 40 +++++++++++------- src/components/Documents/ViewDocument.jsx | 49 +++++++++++++--------- src/components/Employee/EmployeeNav.jsx | 13 ++++-- src/utils/constants.jsx | 12 +++++- 5 files changed, 81 insertions(+), 42 deletions(-) diff --git a/src/components/Documents/Documents.jsx b/src/components/Documents/Documents.jsx index 513c6611..612e18f0 100644 --- a/src/components/Documents/Documents.jsx +++ b/src/components/Documents/Documents.jsx @@ -1,7 +1,7 @@ import React, { createContext, useContext, useEffect, useState } from "react"; import GlobalModel from "../common/GlobalModel"; import NewDocument from "./ManageDocument"; -import { DOCUMENTS_ENTITIES } from "../../utils/constants"; +import { DOCUMENTS_ENTITIES, UPLOAD_DOCUMENT } from "../../utils/constants"; import { useParams } from "react-router-dom"; import DocumentsList from "./DocumentsList"; import DocumentFilterPanel from "./DocumentFilterPanel"; @@ -15,6 +15,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import ManageDocument from "./ManageDocument"; import ViewDocument from "./ViewDocument"; import DocumentViewerModal from "./DocumentViewerModal"; +import { useHasUserPermission } from "../../hooks/useHasUserPermission"; // Context export const DocumentContext = createContext(); @@ -63,6 +64,8 @@ const Documents = ({ Document_Entity, Entity }) => { isOpen: false, }); + const canUploadDocument = useHasUserPermission(UPLOAD_DOCUMENT) + const { setOffcanvasContent, setShowTrigger } = useFab(); const methods = useForm({ @@ -154,7 +157,7 @@ const Documents = ({ Document_Entity, Entity }) => { - + )} - - setManageDoc({ document: doc.id, isOpen: true }) - } - > + {canModifyDocument && ( + + setManageDoc({ document: doc.id, isOpen: true }) + } + > + )} - { - setIsDeleteModalOpen(true); - setDeletingId(doc.id); - }} - > + {canDeleteDocument && ( + { + setIsDeleteModalOpen(true); + setDeletingId(doc.id); + }} + > + )} ) : isRestoring ? (
{ const { viewDoc, setViewDoc, setOpenDocument } = useDocumentContext(); const [currentPage, setCurrentPage] = useState(1); + const canVerifyDocument = useHasUserPermission(VERIFY_DOCUMENT); + const canDownloadDocument = useHasUserPermission(DOWNLOAD_DOCUMENT); const { data, isLoading, isError, error } = useDocumentDetails( viewDoc?.document ); @@ -40,10 +47,13 @@ const ViewDocument = () => { }; if (isLoading) return ; - if (isError) return
-

{error?.response?.data?.message || error?.message}

-

{error?.response?.status}

-
; + if (isError) + return ( +
+

{error?.response?.data?.message || error?.message}

+

{error?.response?.status}

+
+ ); return (

Document Details

@@ -178,7 +188,10 @@ const ViewDocument = () => { {!versionLoding && ( diff --git a/src/components/Employee/EmployeeNav.jsx b/src/components/Employee/EmployeeNav.jsx index d9a6b3e0..f5356ffe 100644 --- a/src/components/Employee/EmployeeNav.jsx +++ b/src/components/Employee/EmployeeNav.jsx @@ -1,11 +1,18 @@ import React from "react"; +import { useHasUserPermission } from "../../hooks/useHasUserPermission"; +import { VIEW_DOCUMENT } from "../../utils/constants"; const EmployeeNav = ({ onPillClick, activePill }) => { - const tabs = [ + const canViewDocuments = useHasUserPermission(VIEW_DOCUMENT) + const tabs = [ { key: "profile", icon: "bx bx-user", label: "Profile" }, { key: "attendance", icon: "bx bx-group", label: "Attendances" }, - { key: "documents", icon: "bx bx-user", label: "Documents" }, + canViewDocuments && { + key: "documents", + icon: "bx bx-file", + label: "Documents", + }, { key: "activities", icon: "bx bx-grid-alt", label: "Activities" }, - ]; + ].filter(Boolean); return (
diff --git a/src/utils/constants.jsx b/src/utils/constants.jsx index b5daeb44..18db82df 100644 --- a/src/utils/constants.jsx +++ b/src/utils/constants.jsx @@ -39,12 +39,14 @@ export const VIEW_TASK = "9fcc5f87-25e3-4846-90ac-67a71ab92e3c" export const ASSIGN_REPORT_TASK = "6a32379b-8b3f-49a6-8c48-4b7ac1b55dc2" +// ------------------------Directory------------------------------------- export const DIRECTORY_ADMIN = "4286a13b-bb40-4879-8c6d-18e9e393beda" export const DIRECTORY_MANAGER = "62668630-13ce-4f52-a0f0-db38af2230c5" export const DIRECTORY_USER = "0f919170-92d4-4337-abd3-49b66fc871bb" +// -----------------------Expense---------------------------------------- export const VIEW_SELF_EXPENSE = "385be49f-8fde-440e-bdbc-3dffeb8dd116" export const VIEW_ALL_EXPNESE = "01e06444-9ca7-4df4-b900-8c3fa051b92f"; @@ -55,7 +57,6 @@ export const REVIEW_EXPENSE = "1f4bda08-1873-449a-bb66-3e8222bd871b"; export const APPROVE_EXPENSE = "eaafdd76-8aac-45f9-a530-315589c6deca"; - export const PROCESS_EXPENSE = "ea5a1529-4ee8-4828-80ea-0e23c9d4dd11" export const EXPENSE_MANAGE = "ea5a1529-4ee8-4828-80ea-0e23c9d4dd11" @@ -64,10 +65,19 @@ export const EXPENSE_REJECTEDBY = ["d1ee5eec-24b6-4364-8673-a8f859c60729","965ed export const EXPENSE_DRAFT = "297e0d8f-f668-41b5-bfea-e03b354251c8" +// ----------------------------Tenant------------------------- export const SUPPER_TENANT = "d032cb1a-3f30-462c-bef0-7ace73a71c0b" export const MANAGE_TENANTS = "00e20637-ce8d-4417-bec4-9b31b5e65092" export const VIEW_TENANTS = "647145c6-2108-4c98-aab4-178602236e55" export const ActiveTenant = "297e0d8f-f668-41b5-bfea-e03b354251c8" + +// ---------------------Documents--------------------------------- +export const VIEW_DOCUMENT = "71189504-f1c8-4ca5-8db6-810497be2854"; +export const UPLOAD_DOCUMENT = "3f6d1f67-6fa5-4b7c-b17b-018d4fe4aab8"; +export const MODIFY_DOCUMENT = "c423fd81-6273-4b9d-bb5e-76a0fb343833"; +export const DELETE_DOCUMENT = "40863a13-5a66-469d-9b48-135bc5dbf486"; +export const DOWNLOAD_DOCUMENT = "404373d0-860f-490e-a575-1c086ffbce1d"; +export const VERIFY_DOCUMENT = "13a1f30f-38d1-41bf-8e7a-b75189aab8e0"; // -------------------Application Role------------------------------ // 1 - Expense Manage