role add dashboard , permision in navigation , user login

main
حسین معصومی پور 2023-12-07 21:15:58 +03:30
parent 9cff169537
commit 0081650ba6
6 changed files with 182 additions and 155 deletions

12
.env
View File

@ -1,15 +1,15 @@
NODE_ENV="development" NODE_ENV="development"
# NEXT_PUBLIC_SERVER_URL=http://192.168.88.12:32769 NEXT_PUBLIC_SERVER_URL=http://192.168.88.12:32769
# NEXT_PUBLIC_PUBLIC_URL=http://192.168.88.12:32769 NEXT_PUBLIC_PUBLIC_URL=http://192.168.88.12:32769
# NEXT_PUBLIC_API_URL=http://192.168.88.12:32769/api NEXT_PUBLIC_API_URL=http://192.168.88.12:32769/api
# SECURE_LOCAL_STORAGE_HASH_KEY=f1da2b2c7a4c446934267fea631102ec389b5b99 # SECURE_LOCAL_STORAGE_HASH_KEY=f1da2b2c7a4c446934267fea631102ec389b5b99
# NEXT_PUBLIC_API_URL_IMAGE=https://192.168.88.12:49154/Files/ReportImages # NEXT_PUBLIC_API_URL_IMAGE=https://192.168.88.12:49154/Files/ReportImages
# NEXT_PUBLIC_API_URL_BackUp=https://192.168.88.12:49154/Files/BackUps # NEXT_PUBLIC_API_URL_BackUp=https://192.168.88.12:49154/Files/BackUps
NEXT_PUBLIC_SERVER_URL=https://j3884z97-32769.euw.devtunnels.ms # NEXT_PUBLIC_SERVER_URL=https://j3884z97-32769.euw.devtunnels.ms
NEXT_PUBLIC_PUBLIC_URL=https://j3884z97-32769.euw.devtunnels.ms # NEXT_PUBLIC_PUBLIC_URL=https://j3884z97-32769.euw.devtunnels.ms
NEXT_PUBLIC_API_URL=https://j3884z97-32769.euw.devtunnels.ms/api # NEXT_PUBLIC_API_URL=https://j3884z97-32769.euw.devtunnels.ms/api

View File

@ -6,10 +6,12 @@ import { usePathname } from "next/navigation";
import Image from "next/image"; import Image from "next/image";
import logo from "@img/logo.png"; import logo from "@img/logo.png";
import AppContext from "@ctx/AppContext"; import AppContext from "@ctx/AppContext";
import { HasPermission } from "plugins/HasPermission/page";
const NavBAr = (props) => { const NavBAr = (props) => {
const usePath = usePathname(); const usePath = usePathname();
const CTX = useContext(AppContext); const CTX = useContext(AppContext);
const permissions = CTX.state.profile?.permissions;
const openBigPlus = () => { const openBigPlus = () => {
setTimeout(() => { setTimeout(() => {
@ -24,6 +26,7 @@ const NavBAr = (props) => {
<Image src={divide} alt="" className=" " /> <Image src={divide} alt="" className=" " />
</div> */} </div> */}
<div className="bg-white shadow px-4 py-5 flex rounded-t-[30px] "> <div className="bg-white shadow px-4 py-5 flex rounded-t-[30px] ">
{HasPermission("ViewDashboard") && (
<Link href={"/home"} className="w-full !no-underline mr-5"> <Link href={"/home"} className="w-full !no-underline mr-5">
<> <>
{usePath.includes("/home") ? ( {usePath.includes("/home") ? (
@ -65,7 +68,8 @@ const NavBAr = (props) => {
)} )}
</> </>
</Link> </Link>
)}
{HasPermission("ViewShiftPlans") && (
<Link href={"/shifts"} className="w-full !no-underline mr-10"> <Link href={"/shifts"} className="w-full !no-underline mr-10">
<> <>
{usePath.includes("/shifts") ? ( {usePath.includes("/shifts") ? (
@ -121,6 +125,8 @@ const NavBAr = (props) => {
)} )}
</> </>
</Link> </Link>
)}
<div <div
className="flex justify-center " className="flex justify-center "
onClick={() => { onClick={() => {
@ -144,6 +150,7 @@ const NavBAr = (props) => {
</div> </div>
</div> </div>
{HasPermission("ViewComplexSettings") && (
<Link href={"/employees"} className="w-full !no-underline ml-10"> <Link href={"/employees"} className="w-full !no-underline ml-10">
<> <>
{usePath.includes("/employees") ? ( {usePath.includes("/employees") ? (
@ -179,7 +186,9 @@ const NavBAr = (props) => {
)} )}
</> </>
</Link> </Link>
)}
{HasPermission("ViewActivities") && (
<Link href={"/tasks"} className="w-full !no-underline ml-5"> <Link href={"/tasks"} className="w-full !no-underline ml-5">
<> <>
{usePath.includes("/tasks") ? ( {usePath.includes("/tasks") ? (
@ -197,6 +206,7 @@ const NavBAr = (props) => {
)} )}
</> </>
</Link> </Link>
)}
</div> </div>
</div> </div>
); );

View File

@ -1,6 +1,6 @@
{ {
"name": "brizco", "name": "brizco",
"version": "0.1.5", "version": "0.1.6",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",

View File

@ -0,0 +1,8 @@
import AppContext from "@ctx/AppContext";
import React, { useContext } from "react";
export const HasPermission = (permission) => {
const CTX = useContext(AppContext);
const permissions = CTX.state.profile?.permissions;
return permissions?.includes(permission);
};

View File

@ -13,6 +13,7 @@ import React, { useContext, useEffect } from "react";
import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js";
import { Doughnut, Pie } from "react-chartjs-2"; import { Doughnut, Pie } from "react-chartjs-2";
import BottomSheetChangeRole from "plugins/BottomSheet/BottomSheetChangeRole"; import BottomSheetChangeRole from "plugins/BottomSheet/BottomSheetChangeRole";
import { HasPermission } from "plugins/HasPermission/page";
ChartJS.register(ArcElement, Tooltip, Legend); ChartJS.register(ArcElement, Tooltip, Legend);
@ -63,7 +64,15 @@ const Home = (props) => {
} }
}, []); }, []);
console.log(profile); // useEffect(() => {
// if (!HasPermission("ViewDashboard")) {
// // You can customize the redirect path as needed
// router.replace("/activity");
// return null; // Prevent rendering the rest of the component
// console.log(HasPermission("ViewDashboard"));
// }
// }, [profile]);
return ( return (
<div className="pb-20"> <div className="pb-20">

View File

@ -179,7 +179,7 @@ export default function RootLayout({ children }) {
if (data.user.signUpStatus == 1) { if (data.user.signUpStatus == 1) {
setStepLogin(2); setStepLogin(2);
} else if (data.user.signUpStatus == 2) { } else if (data.user.signUpStatus == 2 || data.user.signUpStatus == 3) {
setProfile(data); setProfile(data);
toast.success(` ${data.user.firstName} جان خوش اومدی `, { toast.success(` ${data.user.firstName} جان خوش اومدی `, {
position: "bottom-right", position: "bottom-right",