Browse Source

abilites to localStorage

feature/axios_provider
MSI\derek 6 months ago
parent
commit
f9397974f2
8 changed files with 62 additions and 24 deletions
  1. +13
    -3
      src/app/(main)/home/page.tsx
  2. +0
    -0
      src/app/(main)/settings/user/page.tsx
  3. +1
    -1
      src/app/layout.tsx
  4. +11
    -3
      src/components/DashboardPage/DashboardPage.tsx
  5. +18
    -0
      src/components/DashboardPage/DashboardWrapper.tsx
  6. +1
    -1
      src/components/DashboardPage/index.ts
  7. +16
    -16
      src/components/NavigationContent/NavigationContent.tsx
  8. +2
    -0
      src/config/authConfig.ts

+ 13
- 3
src/app/(main)/home/page.tsx View File

@@ -1,18 +1,28 @@
import { Metadata } from "next"; import { Metadata } from "next";
import { I18nProvider } from "@/i18n"; import { I18nProvider } from "@/i18n";
import DashboardPage from "@/components/DashboardPage/DashboardPage";
import DashboardPageButton from "@/components/DashboardPage/DashboardTabButton"; import DashboardPageButton from "@/components/DashboardPage/DashboardTabButton";
import ProgressByClientSearch from "@/components/ProgressByClientSearch"; import ProgressByClientSearch from "@/components/ProgressByClientSearch";
import { Suspense } from "react"; import { Suspense } from "react";
import Tabs, { TabsProps } from "@mui/material/Tabs"; import Tabs, { TabsProps } from "@mui/material/Tabs";
import Tab from "@mui/material/Tab"; import Tab from "@mui/material/Tab";
import { getServerI18n } from "@/i18n";
import DashboardPage from "@/components/DashboardPage";


export const metadata: Metadata = { export const metadata: Metadata = {
title: "Dashboard", title: "Dashboard",
}; };


const Dashboard: React.FC = () => {
return <div>test</div>;
// type Props = {
// test: string
// }
const Dashboard: React.FC = async () => {
const { t } = await getServerI18n("dashboard");

return (
<I18nProvider namespaces={["dashboard", "common"]}>
<DashboardPage/>
</I18nProvider>
)
}; };


export default Dashboard; export default Dashboard;

src/app/(main)/masterData/user/page.tsx → src/app/(main)/settings/user/page.tsx View File


+ 1
- 1
src/app/layout.tsx View File

@@ -4,7 +4,7 @@ import ThemeRegistry from "@/theme/ThemeRegistry";


export const metadata: Metadata = { export const metadata: Metadata = {
title: "FPSMS", title: "FPSMS",
description: "FPSMS - Timesheet Management System",
description: "FPSMS - xxxx Management System",
}; };


export default async function RootLayout({ export default async function RootLayout({


+ 11
- 3
src/components/DashboardPage/DashboardPage.tsx View File

@@ -14,11 +14,19 @@ import { useRouter } from "next/navigation";
import ProgressByClient from "./ProgressByClient"; import ProgressByClient from "./ProgressByClient";
import ProgressByClientSearch from "@/components/ProgressByClientSearch"; import ProgressByClientSearch from "@/components/ProgressByClientSearch";
import { Suspense } from "react"; import { Suspense } from "react";
import { getSession } from "next-auth/react";


const DashboardPage: React.FC = () => {
type Props = {
abilities: string[]
}
const DashboardPage: React.FC<Props> = ({
abilities
}) => {
const [tabIndex, setTabIndex] = useState(0); const [tabIndex, setTabIndex] = useState(0);
const { t } = useTranslation("dashboard"); const { t } = useTranslation("dashboard");
const router = useRouter(); const router = useRouter();
window.localStorage.setItem("abilities", JSON.stringify(abilities))

const handleCancel = () => { const handleCancel = () => {
router.back(); router.back();
}; };
@@ -32,10 +40,10 @@ const DashboardPage: React.FC = () => {
<ThemeProvider theme={theme}> <ThemeProvider theme={theme}>
<Tabs value={tabIndex} onChange={handleTabChange} variant="scrollable"> <Tabs value={tabIndex} onChange={handleTabChange} variant="scrollable">
<Tab label="Project Financial Summary" /> <Tab label="Project Financial Summary" />
<Tab label="Project Cash Flow" />
{/* <Tab label="Project Cash Flow" />
<Tab label="Project Progress by Client" /> <Tab label="Project Progress by Client" />
<Tab label="Project Resource Utilization" /> <Tab label="Project Resource Utilization" />
<Tab label="Staff Utilization" />
<Tab label="Staff Utilization" /> */}
</Tabs> </Tabs>
{tabIndex === 2 && <ProgressByClient />} {tabIndex === 2 && <ProgressByClient />}
{/* <Grid container height="100vh" style={{ backgroundColor: theme.palette.background.default}}> {/* <Grid container height="100vh" style={{ backgroundColor: theme.palette.background.default}}>


+ 18
- 0
src/components/DashboardPage/DashboardWrapper.tsx View File

@@ -0,0 +1,18 @@
import { authOptions } from "@/config/authConfig"
import { getServerSession, Session } from "next-auth"
import DashboardPage from "./DashboardPage"

export type SessionWithAbilities = {
abilities: string[]
} & Session | null

const DashboardWrapper: React.FC = async () => {
const session: SessionWithAbilities = await getServerSession(authOptions)

return (
<DashboardPage
abilities={session ? session?.abilities : []}
/>
)
}
export default DashboardWrapper

+ 1
- 1
src/components/DashboardPage/index.ts View File

@@ -1 +1 @@
export { default } from "./DashboardPage";
export { default } from "./DashboardWrapper";

+ 16
- 16
src/components/NavigationContent/NavigationContent.tsx View File

@@ -36,7 +36,7 @@ const navigationItems: NavigationItem[] = [
icon: <Dashboard />, icon: <Dashboard />,
label: "Dashboard", label: "Dashboard",
path: "", path: "",
children: [
// children: [
// { // {
// icon: <SummarizeIcon />, // icon: <SummarizeIcon />,
// label: "Project Financial Summary", // label: "Project Financial Summary",
@@ -62,7 +62,7 @@ const navigationItems: NavigationItem[] = [
// label: "Staff Utilization", // label: "Staff Utilization",
// path: "/dashboard/StaffUtilization", // path: "/dashboard/StaffUtilization",
// }, // },
],
// ],
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
@@ -193,73 +193,73 @@ const navigationItems: NavigationItem[] = [
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Master Data",
label: "Settings",
path: "", path: "",
children: [ children: [
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "User", label: "User",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "User Group", label: "User Group",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Material", label: "Material",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Maintain By-product", label: "Maintain By-product",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Finished Goods", label: "Finished Goods",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Equipment Type", label: "Equipment Type",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Equipment", label: "Equipment",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Warehouse", label: "Warehouse",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Supplier", label: "Supplier",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "Customer", label: "Customer",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "QC Check Item", label: "QC Check Item",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "QC Category", label: "QC Category",
path: "/masterData/user",
path: "/settings/user",
}, },
{ {
icon: <RequestQuote />, icon: <RequestQuote />,
label: "QC Check Template", label: "QC Check Template",
path: "/masterData/user",
path: "/settings/user",
}, },
], ],
}, },


+ 2
- 0
src/config/authConfig.ts View File

@@ -5,6 +5,7 @@ import { LOGIN_API_PATH } from "./api";
export interface SessionWithTokens extends Session { export interface SessionWithTokens extends Session {
accessToken?: string; accessToken?: string;
refreshToken?: string; refreshToken?: string;
abilities: string[]
} }


export const authOptions: AuthOptions = { export const authOptions: AuthOptions = {
@@ -50,6 +51,7 @@ export const authOptions: AuthOptions = {
// Add the data from the token to the session // Add the data from the token to the session
accessToken: token.accessToken as string | undefined, accessToken: token.accessToken as string | undefined,
refreshToken: token.refreshToken as string | undefined, refreshToken: token.refreshToken as string | undefined,
abilities: token.abilities as string[]
}; };


return sessionWithToken; return sessionWithToken;


Loading…
Cancel
Save