|
- import { ページアクセス許可判定 } from "auth/route";
- import QRサービス券駐車場グループ管理ContextProvider from "contexts/page/dashboard/parking/QRサービス券駐車場グループ管理Context";
- import 店舗詳細ContextProvider from "contexts/page/dashboard/shop/店舗詳細Context";
- import AuthGuard from "guards/AuthGuard";
- import useAuth from "hooks/useAuth";
- import DashboardLayout from "layouts/dashbord";
- import { PageID, TabID } from "pages";
- import { lazy, useMemo } from "react";
- import { Outlet, RouteObject } from "react-router-dom";
- import { Loadable } from "routes";
- import { getPath } from "routes/path";
-
- export default function DashboardRoutes(): RouteObject[] {
- const { currentRole } = useAuth();
-
- const children: RouteObject[] = useMemo(() => {
- const Enpty = Loadable(lazy(() => import("pages/dashboard/empty")));
- const Dashboard = Loadable(lazy(() => import("pages/dashboard")));
- const 成り代わり終了 = Loadable(
- lazy(() => import("pages/dashboard/成り代わり終了"))
- );
-
- const サービス券発行用QRコード = Loadable(
- lazy(() => import("pages/dashboard/qr-service/サービス券発行"))
- );
- const サービス券利用履歴 = Loadable(
- lazy(() => import("pages/dashboard/qr-service/利用履歴一覧"))
- );
- const QRサービス券駐車場管理一覧 = Loadable(
- lazy(
- () => import("pages/dashboard/qr-service/QRサービス券駐車場管理/一覧")
- )
- );
- const QRサービス券駐車場管理新規登録 = Loadable(
- lazy(
- () =>
- import("pages/dashboard/qr-service/QRサービス券駐車場管理/新規登録")
- )
- );
- const QRサービス券駐車場管理詳細 = Loadable(
- lazy(
- () => import("pages/dashboard/qr-service/QRサービス券駐車場管理/詳細")
- )
- );
- const 顧客ログインユーザ一覧 = Loadable(
- lazy(() => import("pages/dashboard/login-user/顧客ログインユーザ一覧"))
- );
- const 顧客ログインユーザ新規登録 = Loadable(
- lazy(
- () => import("pages/dashboard/login-user/顧客ログインユーザ新規登録")
- )
- );
- const 店舗ログインユーザ一覧 = Loadable(
- lazy(() => import("pages/dashboard/login-user/店舗/一覧"))
- );
- const 店舗ログインユーザ新規登録 = Loadable(
- lazy(() => import("pages/dashboard/login-user/店舗/新規登録"))
- );
- const 店舗新規登録 = Loadable(
- lazy(() => import("pages/dashboard/shop/店舗新規登録"))
- );
- const 店舗一覧 = Loadable(
- lazy(() => import("pages/dashboard/shop/店舗一覧"))
- );
- const 店舗詳細 = Loadable(
- lazy(() => import("pages/dashboard/shop/店舗詳細/詳細"))
- );
- const 店舗詳細基本設定 = Loadable(
- lazy(() => import("pages/dashboard/shop/店舗詳細/基本設定"))
- );
- const 店舗詳細QR取得設定 = Loadable(
- lazy(() => import("pages/dashboard/shop/店舗詳細/QR取得設定"))
- );
- const 店舗詳細QR認証設定 = Loadable(
- lazy(() => import("pages/dashboard/shop/店舗詳細/QR認証設定"))
- );
-
- const allChildren: {
- pageId: PageID;
- ele: RouteObject;
- }[] = [
- {
- pageId: PageID.DASHBOARD_ENPTY,
- ele: {
- element: <Enpty />,
- path: getPath(PageID.DASHBOARD_ENPTY),
- },
- },
- {
- pageId: PageID.DASHBOARD_OVERVIEW,
- ele: {
- element: <Dashboard />,
- path: getPath(PageID.DASHBOARD_OVERVIEW),
- },
- },
- {
- pageId: PageID.成り代わり終了,
- ele: {
- element: <成り代わり終了 />,
- path: getPath(PageID.成り代わり終了),
- },
- },
- {
- pageId: PageID.ログインユーザ_顧客一覧,
- ele: {
- element: <顧客ログインユーザ一覧 />,
- path: getPath(PageID.ログインユーザ_顧客一覧),
- },
- },
- {
- pageId: PageID.ログインユーザ_顧客新規登録,
- ele: {
- element: <顧客ログインユーザ新規登録 />,
- path: getPath(PageID.ログインユーザ_顧客新規登録),
- },
- },
- {
- pageId: PageID.ログインユーザ_店舗一覧,
- ele: {
- element: <店舗ログインユーザ一覧 />,
- path: getPath(PageID.ログインユーザ_店舗一覧),
- },
- },
- {
- pageId: PageID.ログインユーザ_店舗新規登録,
- ele: {
- element: <店舗ログインユーザ新規登録 />,
- path: getPath(PageID.ログインユーザ_店舗新規登録),
- },
- },
- {
- pageId: PageID.店舗新規登録,
- ele: {
- element: <店舗新規登録 />,
- path: getPath(PageID.店舗新規登録),
- },
- },
- {
- pageId: PageID.店舗一覧,
- ele: {
- element: <店舗一覧 />,
- path: getPath(PageID.店舗一覧),
- },
- },
- {
- pageId: PageID.店舗詳細,
- ele: {
- element: (
- <店舗詳細ContextProvider>
- <Outlet />
- </店舗詳細ContextProvider>
- ),
- children: [
- {
- element: <店舗詳細 />,
- path: getPath([PageID.店舗詳細, TabID.店舗詳細_メイン]),
- },
- {
- element: <店舗詳細基本設定 />,
- path: getPath([PageID.店舗詳細, TabID.店舗詳細_基本設定]),
- },
- {
- element: <店舗詳細QR認証設定 />,
- path: getPath([PageID.店舗詳細, TabID.店舗詳細_QR認証設定]),
- },
- {
- element: <店舗詳細QR取得設定 />,
- path: getPath([PageID.店舗詳細, TabID.店舗詳細_QR取得設定]),
- },
- ],
- },
- },
- {
- pageId: PageID.QRサービス券駐車場グループ管理,
- ele: {
- element: (
- <QRサービス券駐車場グループ管理ContextProvider>
- <Outlet />
- </QRサービス券駐車場グループ管理ContextProvider>
- ),
- children: [
- {
- element: <QRサービス券駐車場管理一覧 />,
- path: getPath([
- PageID.QRサービス券駐車場グループ管理,
- TabID.QRサービス券駐車場グループ管理_一覧,
- ]),
- },
- {
- element: <QRサービス券駐車場管理新規登録 />,
- path: getPath([
- PageID.QRサービス券駐車場グループ管理,
- TabID.QRサービス券駐車場グループ管理_新規登録,
- ]),
- },
- {
- element: <QRサービス券駐車場管理詳細 />,
- path: getPath([
- PageID.QRサービス券駐車場グループ管理,
- TabID.QRサービス券駐車場グループ管理_詳細,
- ]),
- },
- ],
- },
- },
- {
- pageId: PageID.サービス券発行用QRコード,
- ele: {
- element: <サービス券発行用QRコード />,
- path: getPath(PageID.サービス券発行用QRコード),
- },
- },
- {
- pageId: PageID.利用履歴,
- ele: {
- element: <サービス券利用履歴 />,
- path: getPath(PageID.利用履歴),
- },
- },
- ];
-
- return allChildren
- .filter(({ pageId }) => {
- if (currentRole === null) {
- return false;
- }
- return ページアクセス許可判定(currentRole, pageId);
- })
- .map(({ ele }) => ele);
- }, [currentRole]);
-
- return [
- {
- element: (
- <AuthGuard>
- <DashboardLayout />
- </AuthGuard>
- ),
- children: children,
- },
- ];
- }
|