diff --git a/apps/cs/app/api/proxy/[...url]/route.ts b/apps/cs/app/api/proxy/[...url]/route.ts index 5397e5fe6..d3092c5c1 100644 --- a/apps/cs/app/api/proxy/[...url]/route.ts +++ b/apps/cs/app/api/proxy/[...url]/route.ts @@ -5,7 +5,7 @@ import { REFRESH_TOKEN, SERVER_API_URL, SITE_ID, -} from "@/shared/config/env"; +} from "@/shared/config"; import { cookies } from "next/headers"; import { NextResponse } from "next/server"; diff --git a/apps/cs/next.config.ts b/apps/cs/next.config.ts index 5e3560133..7c1a12675 100644 --- a/apps/cs/next.config.ts +++ b/apps/cs/next.config.ts @@ -27,7 +27,6 @@ const nextConfig: NextConfig = { "import.meta.env.VITE_AUTH_USER_ID": JSON.stringify( process.env.NEXT_PUBLIC_AUTH_USER_ID, ), - "process.env.SITE_ID": JSON.stringify(process.env.NEXT_PUBLIC_SITE_ID), }), ); diff --git a/apps/cs/src/app/index.tsx b/apps/cs/src/app/index.tsx index eb1d7f7c7..d1d5e56e1 100644 --- a/apps/cs/src/app/index.tsx +++ b/apps/cs/src/app/index.tsx @@ -1,6 +1,6 @@ import "./styles/base.css"; import "./styles/components.css"; -import { AppProvider } from "@/shared/provider"; +import { AppProvider } from "./providers"; const App = ({ children }: Readonly<{ children: React.ReactNode }>) => { return ( diff --git a/apps/cs/src/shared/provider/app-provider.tsx b/apps/cs/src/app/providers/app-provider.tsx similarity index 81% rename from apps/cs/src/shared/provider/app-provider.tsx rename to apps/cs/src/app/providers/app-provider.tsx index 175cc6aaa..7bd2ec683 100644 --- a/apps/cs/src/shared/provider/app-provider.tsx +++ b/apps/cs/src/app/providers/app-provider.tsx @@ -1,8 +1,8 @@ "use client"; import { ConfirmProvider } from "@frontend-opensource/use-react-hooks"; -import { AuthProvider } from "./auth-provider"; -import { CookieProvider } from "./cookie-provider"; +import { AuthProvider } from "@/entities/auth"; +import { CookieProvider } from "@/shared/lib"; import { QueryProvider } from "./query-provider"; const AppProvider = ({ children }: Readonly<{ children: React.ReactNode }>) => { diff --git a/apps/cs/src/app/providers/index.ts b/apps/cs/src/app/providers/index.ts new file mode 100644 index 000000000..15f99b7fd --- /dev/null +++ b/apps/cs/src/app/providers/index.ts @@ -0,0 +1 @@ +export { AppProvider } from "./app-provider"; diff --git a/apps/cs/src/shared/provider/query-provider.tsx b/apps/cs/src/app/providers/query-provider.tsx similarity index 100% rename from apps/cs/src/shared/provider/query-provider.tsx rename to apps/cs/src/app/providers/query-provider.tsx diff --git a/apps/cs/src/entities/auth/login/api/login-service.ts b/apps/cs/src/entities/auth/api/login-service.ts similarity index 94% rename from apps/cs/src/entities/auth/login/api/login-service.ts rename to apps/cs/src/entities/auth/api/login-service.ts index 8c14547a0..c1968fe36 100644 --- a/apps/cs/src/entities/auth/login/api/login-service.ts +++ b/apps/cs/src/entities/auth/api/login-service.ts @@ -1,6 +1,11 @@ import { AxiosError } from "axios"; -import { ENDPOINT, JWT_EXPIRATION_TIME } from "@/shared/config/api"; -import { ACCESS_TOKEN, AUTH_USER_ID, CLAIM_NAME } from "@/shared/config/env"; +import { + ENDPOINT, + JWT_EXPIRATION_TIME, + ACCESS_TOKEN, + AUTH_USER_ID, + CLAIM_NAME, +} from "@/shared/config"; import type { LoginService, ILogin } from "../model/login-interface"; import { tokenManager } from "../lib/token-manager"; diff --git a/apps/cs/src/entities/auth/index.ts b/apps/cs/src/entities/auth/index.ts new file mode 100644 index 000000000..97579d0a5 --- /dev/null +++ b/apps/cs/src/entities/auth/index.ts @@ -0,0 +1,2 @@ +export { LoginApi } from "./api/login-service"; +export { AuthProvider } from "./lib/auth-provider"; diff --git a/apps/cs/src/shared/provider/auth-provider.tsx b/apps/cs/src/entities/auth/lib/auth-provider.tsx similarity index 80% rename from apps/cs/src/shared/provider/auth-provider.tsx rename to apps/cs/src/entities/auth/lib/auth-provider.tsx index 60b273641..551cfa79d 100644 --- a/apps/cs/src/shared/provider/auth-provider.tsx +++ b/apps/cs/src/entities/auth/lib/auth-provider.tsx @@ -2,12 +2,11 @@ import { useRouter } from "next/navigation"; import { useQuery } from "@tanstack/react-query"; -import { createContext, useContext, useState } from "react"; -import { client } from "../api/client"; -import { ENDPOINT } from "../config/api"; -import { AUTH_USER_ID } from "../config/env"; -import { getCookie } from "../lib/cookie"; -import { LoginApi } from "@/entities/auth/login"; +import { createContext, useState } from "react"; +import { client } from "@/shared/api"; +import { ENDPOINT, AUTH_USER_ID } from "@/shared/config"; +import { getCookie } from "@/shared/lib"; +import { LoginApi } from "../api/login-service"; interface IUserInfo { regDt: string; @@ -91,11 +90,3 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => { ); }; - -export const useAuth = (): AuthContextType => { - const context = useContext(AuthContext); - if (!context) { - throw new Error("useAuth must be used within an AuthProvider"); - } - return context; -}; diff --git a/apps/cs/src/entities/auth/login/lib/token-manager.ts b/apps/cs/src/entities/auth/lib/token-manager.ts similarity index 94% rename from apps/cs/src/entities/auth/login/lib/token-manager.ts rename to apps/cs/src/entities/auth/lib/token-manager.ts index 4429c7d1b..0e761486a 100644 --- a/apps/cs/src/entities/auth/login/lib/token-manager.ts +++ b/apps/cs/src/entities/auth/lib/token-manager.ts @@ -1,5 +1,5 @@ -import { AUTH_USER_ID, CLAIM_NAME } from "@/shared/config/env"; -import { getCookie, setCookie, removeCookie } from "@/shared/lib/cookie"; +import { AUTH_USER_ID, CLAIM_NAME } from "@/shared/config"; +import { getCookie, setCookie, removeCookie } from "@/shared/lib"; export class TokenManager { private static instance: TokenManager; diff --git a/apps/cs/src/entities/auth/login/index.ts b/apps/cs/src/entities/auth/login/index.ts deleted file mode 100644 index 8c7981ac9..000000000 --- a/apps/cs/src/entities/auth/login/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { LoginApi } from "./api/login-service"; diff --git a/apps/cs/src/entities/auth/login/model/login-interface.ts b/apps/cs/src/entities/auth/model/login-interface.ts similarity index 100% rename from apps/cs/src/entities/auth/login/model/login-interface.ts rename to apps/cs/src/entities/auth/model/login-interface.ts diff --git a/apps/cs/src/entities/code/api/code-service.ts b/apps/cs/src/entities/code/api/code-service.ts index 3a789f2aa..0d1055f6a 100644 --- a/apps/cs/src/entities/code/api/code-service.ts +++ b/apps/cs/src/entities/code/api/code-service.ts @@ -1,5 +1,5 @@ -import { client } from "@/shared/api/client"; -import { ENDPOINT } from "@/shared/config/api"; +import { client } from "@/shared/api"; +import { ENDPOINT } from "@/shared/config"; import type { CodeService, ICode } from "../model/code-interface"; export class CodeApiService implements CodeService { diff --git a/apps/cs/src/entities/code/ui/code-select.tsx b/apps/cs/src/entities/code/ui/code-select.tsx index 5d73ee1d3..00b3157aa 100644 --- a/apps/cs/src/entities/code/ui/code-select.tsx +++ b/apps/cs/src/entities/code/ui/code-select.tsx @@ -6,7 +6,7 @@ import { SelectTrigger, SelectValue, } from "@common/components"; -import { ENDPOINT } from "@/shared/config/api"; +import { ENDPOINT } from "@/shared/config"; import { CodeApi } from "../api/code-service"; type CodeSelectProps = { diff --git a/apps/cs/src/entities/site/index.ts b/apps/cs/src/entities/site/index.ts deleted file mode 100644 index 47f9d7b50..000000000 --- a/apps/cs/src/entities/site/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { SiteApi } from "./api/site-service"; -export * from "./model/site-interface"; diff --git a/apps/cs/src/entities/user/api/user-service.ts b/apps/cs/src/entities/user/api/user-service.ts deleted file mode 100644 index 41319bc1f..000000000 --- a/apps/cs/src/entities/user/api/user-service.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { client } from "@/shared/api/client"; -import { ENDPOINT } from "@/shared/config/api"; -import type { IUser, IUserInfo, UserService } from "../model/user-interface"; - -export class UsersApiService implements UserService { - public async userInfo(payload: IUser): Promise { - const response = await client.get( - `${ENDPOINT.USER_SERVICE.USERS}/${payload.userUniqId}`, - ); - - return response.data; - } -} - -export const UserApi = new UsersApiService(); diff --git a/apps/cs/src/entities/user/index.ts b/apps/cs/src/entities/user/index.ts deleted file mode 100644 index 3076aa261..000000000 --- a/apps/cs/src/entities/user/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { useUser } from "./lib/use-user"; diff --git a/apps/cs/src/entities/user/lib/use-user.ts b/apps/cs/src/entities/user/lib/use-user.ts deleted file mode 100644 index 97cd2f034..000000000 --- a/apps/cs/src/entities/user/lib/use-user.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; -import { ENDPOINT } from "@/shared/config/api"; -import { AUTH_USER_ID } from "@/shared/config/env"; -import { useCookie } from "@/shared/provider"; -import { UserApi } from "../api/user-service"; - -const useUser = () => { - const { getCookie } = useCookie(); - const { data } = useQuery({ - queryKey: [ENDPOINT.USER_SERVICE.USERS], - queryFn: () => - UserApi.userInfo({ - userUniqId: getCookie(AUTH_USER_ID) ?? "", - }), - }); - - return { userInfo: data }; -}; - -export { useUser }; diff --git a/apps/cs/src/entities/user/model/user-interface.ts b/apps/cs/src/entities/user/model/user-interface.ts deleted file mode 100644 index cba4a6206..000000000 --- a/apps/cs/src/entities/user/model/user-interface.ts +++ /dev/null @@ -1,41 +0,0 @@ -export interface IUser { - userUniqId: string; -} - -export interface IUserInfo { - regDt: string; - mdfcnDt: string; - rgtr: string; - mdfr: string; - userUnqId: string; - userId: string; - userName: string; - email: string; - encryptedPassword: string; - refreshToken: string; - userStateCode: string; - lastLoginDate: string; - loginFailCount: number; - pswdHnt: string; - pswdAns: string; - mphn: string; - telno: string; - zip: string; - addr: string; - daddr: string; - laeSeCd: string; - ogdpSeCd: string; - aprvYn: string; - autzrId: string; - expryYmd: string; - lastPswdChgDt: string; - googleId: string; - kakaoId: string; - naverId: string; - isSocialUser: boolean; - hasPassword: boolean; -} - -export interface UserService { - userInfo: (payload: IUser) => Promise; -} diff --git a/apps/cs/src/pages/auth/login/ui/login-page.tsx b/apps/cs/src/pages/auth/login/ui/login-page.tsx index c8eb1e2f9..d5e12966a 100644 --- a/apps/cs/src/pages/auth/login/ui/login-page.tsx +++ b/apps/cs/src/pages/auth/login/ui/login-page.tsx @@ -2,7 +2,7 @@ import Image from "next/image"; import { images } from "@common/assets"; -import { LoginApi } from "@/entities/auth/login"; +import { LoginApi } from "@/entities/auth"; import "./login.css"; function LoginPage() { diff --git a/apps/cs/src/entities/site/api/site-service.ts b/apps/cs/src/pages/site/api/site-service.ts similarity index 93% rename from apps/cs/src/entities/site/api/site-service.ts rename to apps/cs/src/pages/site/api/site-service.ts index 1c9d34361..22363de68 100644 --- a/apps/cs/src/entities/site/api/site-service.ts +++ b/apps/cs/src/pages/site/api/site-service.ts @@ -1,5 +1,5 @@ -import { client } from "@/shared/api/client"; -import { ENDPOINT } from "@/shared/config/api"; +import { client } from "@/shared/api"; +import { ENDPOINT } from "@/shared/config"; import { siteFormSchema, type ISiteInfo, diff --git a/apps/cs/src/entities/site/model/site-interface.ts b/apps/cs/src/pages/site/model/site-interface.ts similarity index 100% rename from apps/cs/src/entities/site/model/site-interface.ts rename to apps/cs/src/pages/site/model/site-interface.ts diff --git a/apps/cs/src/pages/site/model/table-columns.tsx b/apps/cs/src/pages/site/model/table-columns.tsx index ddf211aea..35c084896 100644 --- a/apps/cs/src/pages/site/model/table-columns.tsx +++ b/apps/cs/src/pages/site/model/table-columns.tsx @@ -1,6 +1,6 @@ import dayjs from "dayjs"; import { createColumnHelper } from "@tanstack/react-table"; -import type { ISite } from "@/entities/site/model/site-interface"; +import type { ISite } from "./site-interface"; const columnHelper = createColumnHelper(); diff --git a/apps/cs/src/pages/site/ui/create-page.tsx b/apps/cs/src/pages/site/ui/create-page.tsx index 10d2d9030..a79c16022 100644 --- a/apps/cs/src/pages/site/ui/create-page.tsx +++ b/apps/cs/src/pages/site/ui/create-page.tsx @@ -5,7 +5,8 @@ import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { useMutation } from "@tanstack/react-query"; import { zodResolver } from "@hookform/resolvers/zod"; -import { SiteApi, siteFormSchema, type SiteFormData } from "@/entities/site"; +import { SiteApi } from "../api/site-service"; +import { siteFormSchema, type SiteFormData } from "../model/site-interface"; import { SitePageLayout } from "./layout"; import { SiteForm } from "./site-form"; import { diff --git a/apps/cs/src/pages/site/ui/modify-page.tsx b/apps/cs/src/pages/site/ui/modify-page.tsx index 982f12472..8c3bbd093 100644 --- a/apps/cs/src/pages/site/ui/modify-page.tsx +++ b/apps/cs/src/pages/site/ui/modify-page.tsx @@ -5,13 +5,13 @@ import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { useMutation, useQuery } from "@tanstack/react-query"; import { zodResolver } from "@hookform/resolvers/zod"; +import { ENDPOINT } from "@/shared/config"; +import { SiteApi } from "../api/site-service"; import { - SiteApi, siteFormSchema, type ISiteDetail, type SiteFormData, -} from "@/entities/site"; -import { ENDPOINT } from "@/shared/config/api"; +} from "../model/site-interface"; import { SitePageLayout } from "./layout"; import { SiteForm } from "./site-form"; import { diff --git a/apps/cs/src/pages/site/ui/site-form.tsx b/apps/cs/src/pages/site/ui/site-form.tsx index 2178befca..c554a868c 100644 --- a/apps/cs/src/pages/site/ui/site-form.tsx +++ b/apps/cs/src/pages/site/ui/site-form.tsx @@ -19,7 +19,6 @@ import { TableRow, } from "@common/components"; import { CodeSelect } from "@/entities/code"; -import { type ISiteDetail, type SiteFormData } from "@/entities/site"; import { FormItem, FormControl, @@ -27,6 +26,7 @@ import { Form, FormMessage, } from "@/shared/ui/form"; +import { type ISiteDetail, type SiteFormData } from "../model/site-interface"; import { IPManagementDialog } from "./ip-management-dialog"; import { DomainManagementDialog, @@ -37,7 +37,7 @@ type SiteFormProps = { form: UseFormReturn; siteId?: string; handleSave: (data: SiteFormData) => void; - handleDelete: () => void; + handleDelete?: () => void; }; function SiteForm({ form, siteId, handleSave, handleDelete }: SiteFormProps) { @@ -65,7 +65,7 @@ function SiteForm({ form, siteId, handleSave, handleDelete }: SiteFormProps) { const onDelete = async () => { if (await confirm("정말 삭제하시겠습니까?")) { - handleDelete(); + handleDelete?.(); } }; diff --git a/apps/cs/src/pages/site/ui/site-page.tsx b/apps/cs/src/pages/site/ui/site-page.tsx index 4b095caff..1e026c6ec 100644 --- a/apps/cs/src/pages/site/ui/site-page.tsx +++ b/apps/cs/src/pages/site/ui/site-page.tsx @@ -7,8 +7,9 @@ import { useEffect, useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { getCoreRowModel, useReactTable } from "@tanstack/react-table"; import { Button, Input, DataTable } from "@common/components"; -import { SiteApi, type ISite, type ISiteParams } from "@/entities/site"; -import { ENDPOINT } from "@/shared/config/api"; +import { ENDPOINT } from "@/shared/config"; +import { SiteApi } from "../api/site-service"; +import { type ISite, type ISiteParams } from "../model/site-interface"; import { columns } from "../model/table-columns"; import { SitePageLayout } from "./layout"; diff --git a/apps/cs/src/shared/api/index.ts b/apps/cs/src/shared/api/index.ts new file mode 100644 index 000000000..b7b9d6121 --- /dev/null +++ b/apps/cs/src/shared/api/index.ts @@ -0,0 +1 @@ +export { client } from "./client"; diff --git a/apps/cs/src/shared/config/index.ts b/apps/cs/src/shared/config/index.ts new file mode 100644 index 000000000..cd83447d5 --- /dev/null +++ b/apps/cs/src/shared/config/index.ts @@ -0,0 +1,2 @@ +export * from "./api"; +export * from "./env"; diff --git a/apps/cs/src/shared/provider/cookie-provider.tsx b/apps/cs/src/shared/lib/cookie-provider.tsx similarity index 67% rename from apps/cs/src/shared/provider/cookie-provider.tsx rename to apps/cs/src/shared/lib/cookie-provider.tsx index c50050cf5..f844d4f8a 100644 --- a/apps/cs/src/shared/provider/cookie-provider.tsx +++ b/apps/cs/src/shared/lib/cookie-provider.tsx @@ -1,7 +1,7 @@ "use client"; -import { createContext, useContext } from "react"; -import { getCookie, setCookie, removeCookie } from "../lib/cookie"; +import { createContext } from "react"; +import { getCookie, setCookie, removeCookie } from "./cookie"; export interface CookieContextType { getCookie: (name: string) => string | undefined; @@ -28,11 +28,3 @@ export function CookieProvider({ children }: { children: React.ReactNode }) { ); } - -export function useCookie(): CookieContextType { - const context = useContext(CookieContext); - if (!context) { - throw new Error("useCookie must be used within a CookieProvider"); - } - return context; -} diff --git a/apps/cs/src/shared/lib/index.ts b/apps/cs/src/shared/lib/index.ts new file mode 100644 index 000000000..0f4be9c9b --- /dev/null +++ b/apps/cs/src/shared/lib/index.ts @@ -0,0 +1,2 @@ +export { CookieProvider } from "./cookie-provider"; +export { getCookie, setCookie, removeCookie } from "./cookie"; diff --git a/apps/cs/src/shared/provider/index.ts b/apps/cs/src/shared/provider/index.ts deleted file mode 100644 index 6b1832501..000000000 --- a/apps/cs/src/shared/provider/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { AppProvider } from "./app-provider"; -export { useAuth } from "./auth-provider"; -export { useCookie } from "./cookie-provider";