From f94a5dcc9dd2734eee5c6c10a75dd96de5a8f8ec Mon Sep 17 00:00:00 2001 From: nafi-ullah Date: Sat, 30 Mar 2024 00:41:19 +0600 Subject: [PATCH] permissions in profile page --- client/app/profile/[userId]/page.tsx | 90 ++++++++++++++++++-- client/hooks/user_data/useGetAllRole.tsx | 3 +- client/hooks/user_data/useGetUserProfile.tsx | 37 +++++++- 3 files changed, 118 insertions(+), 12 deletions(-) diff --git a/client/app/profile/[userId]/page.tsx b/client/app/profile/[userId]/page.tsx index 82928e3..40ba8dd 100644 --- a/client/app/profile/[userId]/page.tsx +++ b/client/app/profile/[userId]/page.tsx @@ -9,7 +9,16 @@ import { useRouter } from "next/navigation"; import { EditIcon, Factory, CircleUser } from "lucide-react"; import {useEffect, useState} from "react"; import { ProfileEditModal } from "@/components/modals/ProfileEditModal"; +import useGetAllRole from "@/hooks/user_data/useGetAllRole"; +type RolesWithPermisson = { + id: string; + name: string; + permissions: [{ + name: string; + description: string; +}] +}; export default function ProfilePage() { @@ -17,11 +26,18 @@ export default function ProfilePage() { const router = useRouter(); const { user, stsDetails, landfillDetails, getUserDetails} = useGetUserProfile(); // Destructure user and getUserDetails const [role, setRole] = useState("Role Name"); + // const [permissions, setPermissions] = useState([]); const RolePlace = 'Station'; - + const { fetchAllRoles, roles, rolesWithPermissions } = useGetAllRole(); useEffect(() => { - getUserDetails(); - setRole(user.roleName); + const fetchData = async () => { + await getUserDetails(); + await fetchAllRoles(); + + setRole(user.roleName); + }; + + fetchData(); }, []); @@ -64,7 +80,7 @@ export default function ProfilePage() { - {user?.roleName === 'STS_MANAGER' &&
+ {user?.roleName === 'STS_MANAGER' && stsDetails?.stsId?.toString().length > 1 &&
STS Details

Id: {stsDetails.stsId}

STS Name: {stsDetails.stsName}

@@ -77,16 +93,59 @@ export default function ProfilePage() {
} - {user?.roleName === 'LAND_MANAGER' &&
-
Landfill Details
+ +{user?.roleName === 'STS_MANAGER' && stsDetails?.stsId?.toString().length < 1 &&
+
STS Not Assigned
+ Call your admin to assign your STS. +
+ } +{user?.roleName === 'STS_MANAGER' && rolesWithPermissions.some(role => role.name === 'STS_MANAGER') && ( +
+

STS Manager Permissions:

+
    + {rolesWithPermissions + .find(role => role.name === 'STS_MANAGER') + ?.permissions.map(permission => ( +
  • + {permission.name}: {permission.description} +
  • + ))} +
+
+)} + + + {user?.roleName === 'LAND_MANAGER' && landfillDetails?.landfillId?.toString().length > 1 &&
+
Landfill Details

ID: {landfillDetails.landfillId}

Landfill Name: {landfillDetails.landFillName}

Capacity: {landfillDetails.landFillCapacity}

Current Total Waste: {landfillDetails.landFillCurrentWaste}

Coordinate: {landfillDetails.landfillLatitude}, {landfillDetails.landFillLongitude}

+
} + {user?.roleName === 'LAND_MANAGER' && landfillDetails?.landfillId?.toString().length < 1 && ( +
+
LandFill Not Assigned
+ Call your admin to assign your Landfill. +
+ )} + +{user?.roleName === 'LAND_MANAGER' && rolesWithPermissions.some(role => role.name === 'LAND_MANAGER') && ( +
+

Land Manager Permissions:

+
    + {rolesWithPermissions + .find(role => role.name === 'LAND_MANAGER') + ?.permissions.map(permission => ( +
  • + {permission.name}: {permission.description} +
  • + ))} +
+
+)} -
} {user?.roleName === 'SYSTEM_ADMIN' &&
Admin
You are admin
@@ -94,6 +153,23 @@ export default function ProfilePage() { {user?.roleName !== 'STS_MANAGER' && user?.roleName !== 'LAND_MANAGER' && user?.roleName !== 'SYSTEM_ADMIN' && (
Oops! Your role has not assigned yet
)} + +{user?.roleName === 'SYSTEM_ADMIN' && rolesWithPermissions.some(role => role.name === 'SYSTEM_ADMIN') && ( +
+

System Admin Permissions:

+
    + {rolesWithPermissions + .find(role => role.name === 'SYSTEM_ADMIN') + ?.permissions.map(permission => ( +
  • + {permission.name}: {permission.description} +
  • + ))} +
+
+)} + +
diff --git a/client/hooks/user_data/useGetAllRole.tsx b/client/hooks/user_data/useGetAllRole.tsx index c6431f7..4e8f8da 100644 --- a/client/hooks/user_data/useGetAllRole.tsx +++ b/client/hooks/user_data/useGetAllRole.tsx @@ -41,7 +41,7 @@ export default function useGetAllRole() { )}; })); await setRoles([unassigned, admin, landfillManager, stsManager]); - console.log(roles); + // console.log(roles); } catch (error: any) { alert("Error fetching roles... Are you authorized?"); console.log(error.message); @@ -49,6 +49,7 @@ export default function useGetAllRole() { } useEffect(() => { + fetchAllRoles(); }, []); diff --git a/client/hooks/user_data/useGetUserProfile.tsx b/client/hooks/user_data/useGetUserProfile.tsx index 3064a76..a0dd207 100644 --- a/client/hooks/user_data/useGetUserProfile.tsx +++ b/client/hooks/user_data/useGetUserProfile.tsx @@ -14,6 +14,10 @@ type User = { profileName: string; roleName: string; roleDescription: string; + + userCreated: string; + userUpdated: string; + }; @@ -25,6 +29,9 @@ type STSType = { stsCurrentTotalWaste: string; stsLatitude: string; stsLongitude: string; + + roleCreated: string; + roleUpdated: string; } type LandfillType = { @@ -34,6 +41,9 @@ type LandfillType = { landFillCurrentWaste: string; landfillLatitude: string; landFillLongitude: string; + + roleCreated: string; + roleUpdated: string; } export default function useGetUserProfile() { @@ -44,6 +54,8 @@ export default function useGetUserProfile() { profileName: '', roleName: '', roleDescription: '', + userCreated: '', + userUpdated: '' }); // Initialize with undefined const [stsDetails, setStsDetails] = useState({ stsId: '', @@ -53,6 +65,8 @@ export default function useGetUserProfile() { stsCurrentTotalWaste: '', stsLatitude: '', stsLongitude: '', + roleCreated: '', + roleUpdated: '' }); const [landfillDetails, setLandfillDetails] = useState({ @@ -62,6 +76,8 @@ export default function useGetUserProfile() { landFillCurrentWaste: '', landfillLatitude: '', landFillLongitude: '', + roleCreated: '', + roleUpdated: '' }); async function getUserDetails() { @@ -70,7 +86,7 @@ export default function useGetUserProfile() { headers: { Authorization: `Bearer ${getCookie(jwtToken)}` }, }); - console.log(res.data); + // console.log(res.data); if (res.data.roleName === "STS_MANAGER" ) { const userDetails: User = { id: res.data.id, @@ -80,6 +96,10 @@ export default function useGetUserProfile() { roleName: res.data.roleName, roleDescription: res.data.role.description, + userCreated: res.data.createdAt, + userUpdated: res.data.updatedAt + + }; @@ -92,6 +112,9 @@ export default function useGetUserProfile() { stsCurrentTotalWaste: res.data.sts.currentTotalWaste, stsLatitude: res.data.sts.latitude, stsLongitude: res.data.sts.longitude, + + roleCreated: res.data.role.createdAt, + roleUpdated: res.data.role.updatedAt } setStsDetails(ResStsDetails); } @@ -110,7 +133,8 @@ export default function useGetUserProfile() { roleName: res.data.roleName, roleDescription: res.data.role.description, - + userCreated: res.data.createdAt, + userUpdated: res.data.updatedAt }; if(res.data.landfillId){ @@ -122,6 +146,9 @@ export default function useGetUserProfile() { landFillCurrentWaste: res.data.landfill.currentTotalWaste, landfillLatitude: res.data.landfill.latitude, landFillLongitude: res.data.landfill.longitude, + + roleCreated: res.data.role.createdAt, + roleUpdated: res.data.role.updatedAt }; setLandfillDetails(ResLandDetails); @@ -138,7 +165,8 @@ export default function useGetUserProfile() { roleName: res.data.roleName, roleDescription: res.data.role.description, - + userCreated: res.data.createdAt, + userUpdated: res.data.updatedAt }; @@ -153,7 +181,8 @@ export default function useGetUserProfile() { roleName: res.data.roleName, roleDescription: res.data.role.description, - + userCreated: res.data.createdAt, + userUpdated: res.data.updatedAt }; setUser(userDetails);