diff --git a/composables/useOverlay.ts b/composables/useOverlay.ts index 1c78b24..f63030b 100644 --- a/composables/useOverlay.ts +++ b/composables/useOverlay.ts @@ -1,8 +1,4 @@ export default async function useOverlay() { - if (import.meta.server) { - // SSR에서는 cytoscape-overlays를 사용하지 않음 - return null - } - // 전체 export 객체를 반환 - return await import('cytoscape-overlays') -} \ No newline at end of file + // SPA 모드에서는 항상 클라이언트에서만 실행됨 + return await import("cytoscape-overlays"); +} diff --git a/middleware/auth.global.ts b/middleware/auth.global.ts index 9897b60..1b73d4d 100644 --- a/middleware/auth.global.ts +++ b/middleware/auth.global.ts @@ -1,32 +1,30 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { - if (import.meta.client) { - const userStore = useUserStore(); - const { hasPagePermission } = usePermission(); + const userStore = useUserStore(); + const { hasPagePermission } = usePermission(); - // 공개 라우트 목록 (로그인 없이 접근 가능) - const publicRoutes = ["/login", "/register", "/auth-error"]; + // 공개 라우트 목록 (로그인 없이 접근 가능) + const publicRoutes = ["/login", "/register", "/auth-error"]; - // 공개 라우트인지 확인 - const isPublicRoute = publicRoutes.some(route => to.path === route); + // 공개 라우트인지 확인 + const isPublicRoute = publicRoutes.some(route => to.path === route); - // 공개 라우트가 아닌 경우 로그인 체크 - if (!isPublicRoute && !userStore.isLoggedIn) { - return navigateTo("/login"); + // 공개 라우트가 아닌 경우 로그인 체크 + if (!isPublicRoute && !userStore.isLoggedIn) { + return navigateTo("/login"); + } + + // 로그인된 사용자의 경우 권한 체크 + if (userStore.isLoggedIn) { + // 홈화면 경로는 항상 허용 + if (to.path === "/" || to.path === "/1/") { + return; } - // 로그인된 사용자의 경우 권한 체크 - if (userStore.isLoggedIn) { - // 홈화면 경로는 항상 허용 - if (to.path === "/" || to.path === "/1/") { - return; - } - - // 페이지 권한 체크 - if (!hasPagePermission(to.path)) { - console.log(`페이지 권한이 없습니다.: ${to.path}`); - alert(`페이지 권한이 없습니다.`); - return navigateTo("/"); - } + // 페이지 권한 체크 + if (!hasPagePermission(to.path)) { + console.log(`페이지 권한이 없습니다.: ${to.path}`); + alert(`페이지 권한이 없습니다.`); + return navigateTo("/"); } } }); diff --git a/nuxt.config.ts b/nuxt.config.ts index 6dedc22..5fe966e 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,6 +1,6 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ - compatibilityDate: "2025-05-15", + ssr: false, devtools: { enabled: true }, modules: [ "@nuxt/eslint", @@ -36,7 +36,7 @@ export default defineNuxtConfig({ shim: false, strict: true, }, - plugins: ["~/plugins/vue3-tui-grid.client.ts"], + plugins: ["~/plugins/vue3-tui-grid.ts"], components: [ { path: "~/components/base", pathPrefix: false }, // @base/ 접두사 제거 { path: "~/components/layout", pathPrefix: false }, // @layout/ 접두사 제거 diff --git a/plugins/ag-grid.client.ts b/plugins/ag-grid.ts similarity index 100% rename from plugins/ag-grid.client.ts rename to plugins/ag-grid.ts diff --git a/plugins/api.ts b/plugins/api.ts index 04a734d..31b258f 100644 --- a/plugins/api.ts +++ b/plugins/api.ts @@ -19,18 +19,6 @@ export default defineNuxtPlugin(() => { ...(isFormData ? {} : { "Content-Type": "application/json" }), ...(options.headers || {}), }; - - // 3) SSR 쿠키 포워딩 - if (import.meta.server) { - const cookie = useRequestHeaders(["cookie"])?.cookie; - const reqUrl = String(request); - const isBackendApi = - !reqUrl.startsWith("http") || reqUrl.startsWith(baseURL); - - if (cookie && isBackendApi) { - options.headers = { ...(options.headers || {}), cookie } as any; - } - } }, onResponseError({ response }) { // 공통 로깅 diff --git a/plugins/myPlugin.client.ts b/plugins/myPlugin.ts similarity index 100% rename from plugins/myPlugin.client.ts rename to plugins/myPlugin.ts diff --git a/plugins/page-loading.client.ts b/plugins/page-loading.ts similarity index 100% rename from plugins/page-loading.client.ts rename to plugins/page-loading.ts diff --git a/plugins/vue3-tui-grid.client.ts b/plugins/vue3-tui-grid.ts similarity index 96% rename from plugins/vue3-tui-grid.client.ts rename to plugins/vue3-tui-grid.ts index 0918c53..1459938 100644 --- a/plugins/vue3-tui-grid.client.ts +++ b/plugins/vue3-tui-grid.ts @@ -1,7 +1,7 @@ -import { defineNuxtPlugin } from '#app' -import TuiGrid from 'vue3-tui-grid' -import 'tui-grid/dist/tui-grid.css' - -export default defineNuxtPlugin(nuxtApp => { - nuxtApp.vueApp.use(TuiGrid) -}) +import { defineNuxtPlugin } from '#app' +import TuiGrid from 'vue3-tui-grid' +import 'tui-grid/dist/tui-grid.css' + +export default defineNuxtPlugin(nuxtApp => { + nuxtApp.vueApp.use(TuiGrid) +})