chore: cs 프로젝트 최신화

This commit is contained in:
2025-03-11 15:36:23 +09:00
parent e7bff1579e
commit 58a0c5f1de
18 changed files with 372 additions and 49 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
import { Client } from "@common/network";
import { SERVER_API_URL, SITE_ID } from "../config";
import { BASE_URL, SITE_ID } from "../config";
export const client = Client.getInstance({
baseURL: SERVER_API_URL as string,
siteId: SITE_ID as string,
baseURL: BASE_URL,
siteId: SITE_ID,
});
+5
View File
@@ -1,6 +1,11 @@
import { PROXY_HOST } from "./env";
export const BASE_URL = `${PROXY_HOST}/server`;
export const ENDPOINT = {
USER_SERVICE: {
LOGIN: "/user-service/login",
USERS: "/user-service/api/v1/users",
SILENT_REFRESH: "/user-service/api/v1/users/token/refresh",
},
};
+6 -2
View File
@@ -1,9 +1,13 @@
export const PORT = process.env.NEXT_PUBLIC_PORT || "3000";
export const PROXY_HOST =
process.env.NEXT_PUBLIC_PROXY_HOST || `http://localhost:${PORT}`;
export const SERVER_API_URL = process.env.NEXT_PUBLIC_SERVER_API_URL;
export const SITE_ID = process.env.NEXT_PUBLIC_SITE_ID;
export const SITE_ID = process.env.NEXT_PUBLIC_SITE_ID || "CS";
export const CLAIM_NAME = process.env.NEXT_PUBLIC_CLAIM_NAME || "Authorization";
export const ACCESS_TOKEN =
process.env.NEXT_PUBLIC_ACCESS_TOKEN || "access-token";
export const REFRESH_TOKEN =
process.env.NEXT_PUBLIC_REFRESH_TOKEN || "refresh-token";
export const TOKEN_ID = process.env.NEXT_PUBLIC_TOKEN_ID || "token-id";
export const AUTH_USER_ID = process.env.NEXT_PUBLIC_AUTH_USER_ID || "token-id";
+50
View File
@@ -0,0 +1,50 @@
"use client";
import Cookies from "js-cookie";
export function getCookie(name: string): string | undefined {
if (typeof window === "undefined") {
return undefined;
}
return Cookies.get(name);
}
export function setCookie(
name: string,
value: string,
options: Cookies.CookieAttributes,
): void {
if (typeof window === "undefined") {
return;
}
Cookies.set(name, value, options);
}
export function removeCookie(
name: string,
options: Cookies.CookieAttributes,
): void {
if (typeof window === "undefined") {
return;
}
Cookies.remove(name, options);
}
export function getToken(key: string): string | undefined {
return getCookie(key);
}
export function setToken(
key: string,
token: string,
options: Cookies.CookieAttributes,
): void {
setCookie(key, token, {
...options,
path: "/",
});
}
export function removeToken(key: string): void {
removeCookie(key, { path: "/" });
}
@@ -0,0 +1,56 @@
"use client";
import {
getCookie,
setCookie,
removeCookie,
getToken,
setToken,
removeToken,
} from "../../lib/cookie";
import { createContext, useContext } from "react";
export interface CookieContextType {
getToken: (key: string) => string | undefined;
setToken: (
key: string,
token: string,
options: Cookies.CookieAttributes,
) => void;
removeToken: (key: string) => void;
getCookie: (name: string) => string | undefined;
setCookie: (
name: string,
value: string,
options: Cookies.CookieAttributes,
) => void;
removeCookie: (name: string, options: Cookies.CookieAttributes) => void;
}
export const CookieContext = createContext<CookieContextType | null>(null);
export function CookieProvider({ children }: { children: React.ReactNode }) {
const cookieContextValue: CookieContextType = {
getToken,
setToken,
removeToken,
getCookie,
setCookie,
removeCookie,
};
return (
<CookieContext.Provider value={cookieContextValue}>
{children}
</CookieContext.Provider>
);
}
export function useCookie(): CookieContextType {
const context = useContext(CookieContext);
if (!context) {
throw new Error("useCookie must be used within a CookieProvider");
}
return context;
}
+6
View File
@@ -0,0 +1,6 @@
export {
CookieContext,
CookieProvider,
useCookie,
} from "./cookie/cookie-provider";
export { QueryProvider } from "./query/query-client";
@@ -0,0 +1,11 @@
"use client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
const queryClient = new QueryClient();
export const QueryProvider = ({ children }: { children: React.ReactNode }) => {
return (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
);
};