From abfa2314937cf43ff188eeb42541dcb94a363a06 Mon Sep 17 00:00:00 2001 From: bicochan Date: Wed, 25 Mar 2026 14:22:48 +0900 Subject: [PATCH] =?UTF-8?q?[st]=20refactor:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20auth=20=EA=B7=B8=EB=A3=B9?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B6=84=EA=B8=B0=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?(client=20api=20=EC=98=81=ED=96=A5=20=EB=B2=94=EC=9C=84?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=B2=97=EC=96=B4=EB=82=98=EA=B8=B0=20?= =?UTF-8?q?=EC=9C=84=ED=95=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fo/src/entities/auth/lib/auth-wrapper.tsx | 2 - apps/st/app/(auth)/auth/layout.tsx | 17 +++ apps/st/app/{ => (auth)}/auth/login/page.tsx | 0 .../(with-base-layout)/layout.tsx | 5 +- .../(with-base-layout)/loading.tsx | 0 .../(with-base-layout)/statistics/page.tsx | 1 - apps/st/app/{ => (main)}/layout.tsx | 0 apps/st/src/entities/menu/api/menu-service.ts | 128 +++++++++--------- .../common/components/src/ui/lnb/index.tsx | 41 +++--- 9 files changed, 108 insertions(+), 86 deletions(-) create mode 100644 apps/st/app/(auth)/auth/layout.tsx rename apps/st/app/{ => (auth)}/auth/login/page.tsx (100%) rename apps/st/app/{ => (main)}/(with-base-layout)/layout.tsx (97%) rename apps/st/app/{ => (main)}/(with-base-layout)/loading.tsx (100%) rename apps/st/app/{ => (main)}/(with-base-layout)/statistics/page.tsx (98%) rename apps/st/app/{ => (main)}/layout.tsx (100%) diff --git a/apps/fo/src/entities/auth/lib/auth-wrapper.tsx b/apps/fo/src/entities/auth/lib/auth-wrapper.tsx index bf159756c..21fd87180 100644 --- a/apps/fo/src/entities/auth/lib/auth-wrapper.tsx +++ b/apps/fo/src/entities/auth/lib/auth-wrapper.tsx @@ -1,7 +1,6 @@ "use client"; import { useEffect } from "react"; -import { useRouter } from "next/navigation"; import { client } from "@/src/shared/api"; import type { IUserInfo } from "@/src/shared/store"; import { isAtLoginRedirectUrl } from "@common/network"; @@ -12,7 +11,6 @@ const LOGIN_PAGE_URL = process.env.NEXT_PUBLIC_CM_LOGIN_PAGE_URL || "/auth/login"; const AuthWrapper = ({ children }: { children: React.ReactNode }) => { - const router = useRouter(); const { userInfo, setUserInfo } = useUserStore((state) => state); async function authCheck() { diff --git a/apps/st/app/(auth)/auth/layout.tsx b/apps/st/app/(auth)/auth/layout.tsx new file mode 100644 index 000000000..33651c590 --- /dev/null +++ b/apps/st/app/(auth)/auth/layout.tsx @@ -0,0 +1,17 @@ +import "@/app/styles/base.css"; + +export const metadata = { + title: "유역하수도 통합 정보플랫폼", +}; + +export default function AuthLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + {children} + + ); +} diff --git a/apps/st/app/auth/login/page.tsx b/apps/st/app/(auth)/auth/login/page.tsx similarity index 100% rename from apps/st/app/auth/login/page.tsx rename to apps/st/app/(auth)/auth/login/page.tsx diff --git a/apps/st/app/(with-base-layout)/layout.tsx b/apps/st/app/(main)/(with-base-layout)/layout.tsx similarity index 97% rename from apps/st/app/(with-base-layout)/layout.tsx rename to apps/st/app/(main)/(with-base-layout)/layout.tsx index 71343c00e..6faa92cc1 100644 --- a/apps/st/app/(with-base-layout)/layout.tsx +++ b/apps/st/app/(main)/(with-base-layout)/layout.tsx @@ -12,12 +12,11 @@ import { useQuery, useQueryClient } from "@tanstack/react-query"; import { ENDPOINT } from "@/shared/config"; import { getCookie, useAlertStore, useMenuStore } from "@/shared/lib"; import { StatisticsPageLayout } from "@/shared/ui/statistics-page-layout"; +import { MenuApi } from "@/entities/menu"; import type { MenuItem } from "@/entities/menu"; import { BaseLayout } from "@common/components"; import { getConfig } from "@common/config"; -import { getMenuList } from "../../../../packages/common/components/src/api"; - import { getTabStoreState, useTabStore } from "@/store/tab-store"; const appConfig = getConfig(); @@ -51,7 +50,7 @@ export default function WithBaseLayout({ const { data: menuListData } = useQuery({ queryKey: [ENDPOINT.CMS_SERVICE.MENU_ROLES], - queryFn: () => getMenuList(appSiteId), + queryFn: () => MenuApi.getMenuRoles(appSiteId), enabled: isLoggedIn, }); diff --git a/apps/st/app/(with-base-layout)/loading.tsx b/apps/st/app/(main)/(with-base-layout)/loading.tsx similarity index 100% rename from apps/st/app/(with-base-layout)/loading.tsx rename to apps/st/app/(main)/(with-base-layout)/loading.tsx diff --git a/apps/st/app/(with-base-layout)/statistics/page.tsx b/apps/st/app/(main)/(with-base-layout)/statistics/page.tsx similarity index 98% rename from apps/st/app/(with-base-layout)/statistics/page.tsx rename to apps/st/app/(main)/(with-base-layout)/statistics/page.tsx index f32417f76..23feaf7e1 100644 --- a/apps/st/app/(with-base-layout)/statistics/page.tsx +++ b/apps/st/app/(main)/(with-base-layout)/statistics/page.tsx @@ -1,3 +1,2 @@ import { StatisticsPage } from "@/pages/statistics"; - export default StatisticsPage; diff --git a/apps/st/app/layout.tsx b/apps/st/app/(main)/layout.tsx similarity index 100% rename from apps/st/app/layout.tsx rename to apps/st/app/(main)/layout.tsx diff --git a/apps/st/src/entities/menu/api/menu-service.ts b/apps/st/src/entities/menu/api/menu-service.ts index 07e9e552a..59788e0f5 100644 --- a/apps/st/src/entities/menu/api/menu-service.ts +++ b/apps/st/src/entities/menu/api/menu-service.ts @@ -1,79 +1,81 @@ import { client } from "@/shared/api"; import { ENDPOINT } from "@/shared/config"; import type { - MenuService, - Menu, - MenuItem, - MenuFormData, - MenuTemporarilyStoredData, - SiteMapFormData, + MenuService, + Menu, + MenuItem, + MenuFormData, + MenuTemporarilyStoredData, + SiteMapFormData, } from "../model/menu-interface"; export class MenuApiService implements MenuService { - async getMenuRoles(siteId: string): Promise { - const response = await client.get( - `${ENDPOINT.CMS_SERVICE.MENU_ROLES}/${siteId}`, - ); - return response.data; - } + async getMenuRoles(siteId: string): Promise { + const response = await client.get( + `${ENDPOINT.CMS_SERVICE.MENU_ROLES}/${siteId}`, + ); + return response.data; + } - public async getMenuInfo(menuCd: number): Promise { - const response = await client.get( - `${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`, - ); - return response.data; - } + public async getMenuInfo(menuCd: number): Promise { + const response = await client.get( + `${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`, + ); + return response.data; + } - public async createMenu(data: MenuFormData): Promise { - const response = await client.post( - `${ENDPOINT.CMS_SERVICE.MENUS}`, - data, - ); - return response.data; - } + public async createMenu(data: MenuFormData): Promise { + const response = await client.post( + `${ENDPOINT.CMS_SERVICE.MENUS}`, + data, + ); + return response.data; + } - public async updateMenu( - menuCd: number, - data: Omit, - ): Promise { - const response = await client.put( - `${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`, - data, - ); - return response.data; - } + public async updateMenu( + menuCd: number, + data: Omit, + ): Promise { + const response = await client.put( + `${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`, + data, + ); + return response.data; + } - public async deleteMenu(menuCd: number): Promise { - await client.delete(`${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`); - } + public async deleteMenu(menuCd: number): Promise { + await client.delete(`${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`); + } - public async menuTemporaryStorage( - menuCd: number, - data: MenuFormData, - ): Promise { - const response = await client.post( - `${ENDPOINT.CMS_SERVICE.MENU_TEMPORARY_STORAGE}/${menuCd}`, - data, - ); - return response.data; - } + public async menuTemporaryStorage( + menuCd: number, + data: MenuFormData, + ): Promise { + const response = await client.post( + `${ENDPOINT.CMS_SERVICE.MENU_TEMPORARY_STORAGE}/${menuCd}`, + data, + ); + return response.data; + } - public async getMenuTemporarilyStoredData( - menuCd: number, - ): Promise { - const response = await client.get( - `${ENDPOINT.CMS_SERVICE.MENU_TEMPORARY_STORAGE}/menu/${menuCd}/user`, - ); - return response.data; - } + public async getMenuTemporarilyStoredData( + menuCd: number, + ): Promise { + const response = await client.get( + `${ENDPOINT.CMS_SERVICE.MENU_TEMPORARY_STORAGE}/menu/${menuCd}/user`, + ); + return response.data; + } - public async publishSiteMap(data: SiteMapFormData["siteMap"]): Promise { - const response = await client.post( - `${ENDPOINT.CMS_SERVICE.MENUS}/sitemap/publish`, - data, - ); - return response.data; - } + public async publishSiteMap( + data: SiteMapFormData["siteMap"], + ): Promise { + const response = await client.post( + `${ENDPOINT.CMS_SERVICE.MENUS}/sitemap/publish`, + data, + ); + return response.data; + } } export const MenuApi = new MenuApiService(); diff --git a/packages/common/components/src/ui/lnb/index.tsx b/packages/common/components/src/ui/lnb/index.tsx index 12b50e324..3339a6f26 100644 --- a/packages/common/components/src/ui/lnb/index.tsx +++ b/packages/common/components/src/ui/lnb/index.tsx @@ -2,7 +2,7 @@ import { useState, useEffect, useRef } from "react"; import { useQuery } from "@tanstack/react-query"; -import { ChevronRight, HelpCircle } from "lucide-react"; +import { ChevronRight } from "lucide-react"; import { useDetectDevice } from "@frontend-opensource/use-react-hooks"; import { getConfig } from "@common/config"; import { getParentIds } from "./lib"; @@ -66,7 +66,13 @@ export function LNB({ const [currentMenuCode, setCurrentMenuCode] = useState(null); const prevPathRef = useRef(currentPath); const { browser } = useDetectDevice(); - const { isOpen: isHelpModalOpen, openHelp, closeHelp, setHelpContent, helpContent } = useHelpDialog(); + const { + isOpen: isHelpModalOpen, + openHelp, + closeHelp, + setHelpContent, + helpContent, + } = useHelpDialog(); const siteId = propSiteId ?? appSiteId; @@ -170,12 +176,12 @@ export function LNB({ const handleClick = () => { if (!isSidebarOpen) setOpen(true); setCookie("menu-code-key", item.menuCd.toString()); - + // newWndwYn이 Y인 경우 새창으로 열기 if (item.newWndwYn === "Y") { window.open(item.urlPath, "_blank"); } - + handleMenuClick?.(item); }; @@ -295,30 +301,31 @@ export function LNB({ {/* 도움말 아이콘 */}
- open ? openHelp() : closeHelp()}> - - - - + (open ? openHelp() : closeHelp())} + > + + 도움말 -
+
{helpContent ? (
]*>/gi, '
') - .replace(/<\/body>/gi, '
') + .replace(/]*>/gi, "
") + .replace(/<\/body>/gi, "
"), }} style={{ - fontSize: 'inherit', + fontSize: "inherit", }} />