From c1f10af49f63d38d9fef271cbb3cbf2f5166c6e7 Mon Sep 17 00:00:00 2001 From: lee Date: Fri, 30 May 2025 00:24:53 +0800 Subject: [PATCH] buildsec2 --- apps/api/package.json | 2 +- apps/api/src/libs/db/prismaClient.ts | 1 + apps/api/src/server/auth/api.ts | 3 +-- apps/api/src/server/auth/service.ts | 3 ++- apps/api/src/server/main.ts | 6 ++++++ apps/web/src/app/(pages)/blog/tag/page.tsx | 2 +- apps/web/src/app/_components/auth/login-form.tsx | 2 -- .../src/app/_components/auth/register-form.tsx | 2 -- apps/web/src/app/_components/auth/service.ts | 3 +-- .../src/app/_components/blog/category/list.tsx | 1 - apps/web/src/app/api/[[...route]]/route.ts | 15 ++++++++------- apps/web/src/lib/api.ts | 10 +++++----- apps/web/src/lib/cookies.ts | 4 +++- apps/web/src/lib/event/eventEmiiter.ts | 15 --------------- apps/web/src/lib/token.ts | 11 +++++------ web.http | 3 +++ 16 files changed, 37 insertions(+), 46 deletions(-) delete mode 100644 apps/web/src/lib/event/eventEmiiter.ts create mode 100644 web.http diff --git a/apps/api/package.json b/apps/api/package.json index cb5a51d..d1eb492 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -28,7 +28,7 @@ "dist" ], "scripts": { - "build": "bunchee --tsconfig tsconfig.build.json", + "build": "bunchee -watch --tsconfig tsconfig.build.json", "dev": "tsx watch src/index.ts", "dbm": "prisma migrate dev", "dbp": "prisma db push", diff --git a/apps/api/src/libs/db/prismaClient.ts b/apps/api/src/libs/db/prismaClient.ts index c5d3ea1..50fedec 100644 --- a/apps/api/src/libs/db/prismaClient.ts +++ b/apps/api/src/libs/db/prismaClient.ts @@ -1,5 +1,6 @@ /* eslint-disable no-var */ /* eslint-disable vars-on-top */ + import type { Prisma } from "@prisma/client"; import { PrismaClient } from "@prisma/client"; diff --git a/apps/api/src/server/auth/api.ts b/apps/api/src/server/auth/api.ts index 9a06d27..3eb5c11 100644 --- a/apps/api/src/server/auth/api.ts +++ b/apps/api/src/server/auth/api.ts @@ -34,8 +34,8 @@ export const authApi = app .catch((error) => c.json(createErrorResult("服务器错误", error), 500)); }) .get("/profile", async (c) => { - console.log("profile"); const Authorization = c.req.header("authorization"); + const token = Authorization?.split(" ")[1]; if (!token) return c.json({ result: false, data: null, code: 1 }, 200); const users = jwt.decode(token) as any; @@ -52,7 +52,6 @@ export const authApi = app updatedAt: true, }, }); - console.log("user-api", user); if (isNil(user)) return c.json({ result: false, data: null, code: 3 }, 200); return c.json({ result: true, data: user, code: 4 }, 200); diff --git a/apps/api/src/server/auth/service.ts b/apps/api/src/server/auth/service.ts index 3a4195a..c1f8117 100644 --- a/apps/api/src/server/auth/service.ts +++ b/apps/api/src/server/auth/service.ts @@ -1,8 +1,9 @@ import type { User } from "@prisma/client"; +import { isNil, omit } from "lodash"; + import db from "@/libs/db/prismaClient"; import { hashPassword, verifyPassword } from "@/libs/password"; -import { isNil, omit } from "lodash"; import type { createUserType } from "./type"; diff --git a/apps/api/src/server/main.ts b/apps/api/src/server/main.ts index 90304c7..ed20b78 100644 --- a/apps/api/src/server/main.ts +++ b/apps/api/src/server/main.ts @@ -1,3 +1,4 @@ +import { getCookie } from "hono/cookie"; import { cors } from "hono/cors"; import { authApi, categoryApi, postApi, tagApi } from "."; @@ -11,6 +12,11 @@ const routes = app .route("/auth", authApi) .route("/categories", categoryApi); app.use("*", cors()); +app.use("*", async (c, next) => { + const allCookies = getCookie(c); + console.log(allCookies, "cookies111"); + await next(); +}); type AppType = typeof routes; diff --git a/apps/web/src/app/(pages)/blog/tag/page.tsx b/apps/web/src/app/(pages)/blog/tag/page.tsx index c570559..5da72fa 100644 --- a/apps/web/src/app/(pages)/blog/tag/page.tsx +++ b/apps/web/src/app/(pages)/blog/tag/page.tsx @@ -7,7 +7,7 @@ export default async function TagPage() { const res = await fetchApi((c) => c.api.tags.$get()); if (!res.ok) return
Failed to load tags
; const tags = await res.json(); - console.log(tags); + return (
diff --git a/apps/web/src/app/_components/auth/login-form.tsx b/apps/web/src/app/_components/auth/login-form.tsx index 09f2582..95d6c2b 100644 --- a/apps/web/src/app/_components/auth/login-form.tsx +++ b/apps/web/src/app/_components/auth/login-form.tsx @@ -45,13 +45,11 @@ export function LoginForm({ const { token } = await loginApi(data); setAccessToken(token); const user = await getUser(); - console.log(user); if (user) { setauth(user); } router.push("/"); - console.log(token); } catch (err) { console.log(err); diff --git a/apps/web/src/app/_components/auth/register-form.tsx b/apps/web/src/app/_components/auth/register-form.tsx index de3e0bf..f53a2ac 100644 --- a/apps/web/src/app/_components/auth/register-form.tsx +++ b/apps/web/src/app/_components/auth/register-form.tsx @@ -40,8 +40,6 @@ export function RegisterForm({ setAccessToken(token); const user = await getUser(); if (user) { - console.log("user", user); - setauth(user); } }; diff --git a/apps/web/src/app/_components/auth/service.ts b/apps/web/src/app/_components/auth/service.ts index aec9410..eb9a777 100644 --- a/apps/web/src/app/_components/auth/service.ts +++ b/apps/web/src/app/_components/auth/service.ts @@ -10,7 +10,6 @@ export const userFetchApi = async (data: createUserType) => { if (!result.ok) { throw new Error("Failed to create user"); } else { - console.log("success"); const token = await result.json(); return token; } @@ -31,6 +30,6 @@ export const getUser = async () => { const result = await fetchApi(async (c) => c.api.auth.profile.$get()); const user = await result.json(); - console.log(user, "getUser"); + return user.result ? user.data : null; }; diff --git a/apps/web/src/app/_components/blog/category/list.tsx b/apps/web/src/app/_components/blog/category/list.tsx index ba80550..8c98ff8 100644 --- a/apps/web/src/app/_components/blog/category/list.tsx +++ b/apps/web/src/app/_components/blog/category/list.tsx @@ -33,7 +33,6 @@ export const CategoryListComponent = ({ items }: { items: CategoryList }) => { parent: "", }, }); - console.log(items); const categoryHandler = async (data: CreateCategoryParams) => { if (data.parent === "/") { diff --git a/apps/web/src/app/api/[[...route]]/route.ts b/apps/web/src/app/api/[[...route]]/route.ts index 53693c5..43a43f1 100644 --- a/apps/web/src/app/api/[[...route]]/route.ts +++ b/apps/web/src/app/api/[[...route]]/route.ts @@ -1,9 +1,10 @@ import { app } from "@repo/api"; -export const GET = async (req: Request) => app.fetch(req); -export const POST = async (req: Request) => app.fetch(req); -export const PUT = async (req: Request) => app.fetch(req); -export const PATCH = async (req: Request) => app.fetch(req); -export const DELETE = async (req: Request) => app.fetch(req); -export const OPTIONS = async (req: Request) => app.fetch(req); -export const HEAD = async (req: Request) => app.fetch(req); +const refetch = async (req: Request) => { + return app.fetch(req); +}; +export const GET = refetch; +export const POST = refetch; +export const PUT = refetch; +export const PATCH = refetch; +export const DELETE = refetch; diff --git a/apps/web/src/lib/api.ts b/apps/web/src/lib/api.ts index 22085ed..1b345ff 100644 --- a/apps/web/src/lib/api.ts +++ b/apps/web/src/lib/api.ts @@ -1,12 +1,12 @@ +"use server"; import { createClient } from "@repo/api"; import { isNil } from "lodash"; +import { cookies } from "next/headers"; -import { getCookie } from "./cookies"; -import { ACCESS_TOKEN_COOKIE_NAME } from "./token"; - -export const client = createClient({ +const client = createClient({ headers: async () => { - const token = await getCookie(ACCESS_TOKEN_COOKIE_NAME); + const token = (await cookies()).get("auth_token")?.value; + return !isNil(token) && token.length > 0 ? { Authorization: `Bearer ${token}` } : { Authorization: "" }; diff --git a/apps/web/src/lib/cookies.ts b/apps/web/src/lib/cookies.ts index e878379..fe0ad49 100644 --- a/apps/web/src/lib/cookies.ts +++ b/apps/web/src/lib/cookies.ts @@ -21,8 +21,10 @@ export const getCookie = async ( ) => { if (typeof window === "undefined") { const { cookies } = await import("next/headers"); - return (await cookies()).get(name)?.value; + const token = (await cookies()).get(name)?.value; + return token; } + return getClientCookie(name, option); }; export const hasCookie = async ( diff --git a/apps/web/src/lib/event/eventEmiiter.ts b/apps/web/src/lib/event/eventEmiiter.ts deleted file mode 100644 index e9c10d8..0000000 --- a/apps/web/src/lib/event/eventEmiiter.ts +++ /dev/null @@ -1,15 +0,0 @@ -type EventNames = "API:UN_AUTH" | "API:VALIDATE_ERROR"; -type EventListener = (...args: any[]) => void; -class EventEmitter { - private listeners: Record> = { - "API:UN_AUTH": new Set(), - "API:VALIDATE_ERROR": new Set(), - }; - on(EventNames: EventNames, listener: EventListener) { - this.listeners[EventNames].add(listener); - } - emit(EventNames: EventNames, ...args: any[]) { - this.listeners[EventNames].forEach((listener) => listener(...args)); - } -} -export default new EventEmitter(); diff --git a/apps/web/src/lib/token.ts b/apps/web/src/lib/token.ts index 0b59c87..2003987 100644 --- a/apps/web/src/lib/token.ts +++ b/apps/web/src/lib/token.ts @@ -1,10 +1,10 @@ +"use client"; import type { SerializeOptions as CookieSerializeOptions } from "cookie"; +import { setCookie } from "cookies-next"; import jwt from "jsonwebtoken"; import { isNil, omit } from "lodash"; -import { setCookie } from "./cookies"; - type AccessTokenCookieOptions = Pick< CookieSerializeOptions, | "domain" @@ -47,7 +47,7 @@ const getAccessTokenOptions = (token: string): AccessTokenCookieOptions => { name: ACCESS_TOKEN_COOKIE_NAME, value: token, maxAge, - secure: process.env.NODE_ENV === "production", + secure: false, sameSite: "lax", path: "/", }; @@ -57,9 +57,9 @@ const getAccessTokenOptions = (token: string): AccessTokenCookieOptions => { * 在cookies设置access token * @param token */ -const setAccessToken = async (token: string) => { +const setAccessToken = (token: string) => { const options = getAccessTokenOptions(token); - await setCookie( + setCookie( options.name, token, omit(getAccessTokenOptions(token), ["name", "value"]), @@ -72,7 +72,6 @@ const setAccessToken = async (token: string) => { */ const getAccessTokenFromHeader = (req: any): string | null => { const authHeader = req.headers.get?.("authorization"); - console.log(authHeader, "req.headers.get"); if (authHeader?.startsWith("Bearer ")) { return authHeader.substring(7); } diff --git a/web.http b/web.http new file mode 100644 index 0000000..d8bf0c7 --- /dev/null +++ b/web.http @@ -0,0 +1,3 @@ + +GET http://0.0.0.0:3001/api/auth/profile +Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjBlNWQyYTQ4LWM0ODAtNDRhNS1hMjJiLTJlMzIwMWQ0N2U1ZSIsInVzZXJuYW1lIjoiYWRtaW4iLCJyb2xlIjoiVVNFUiIsImV4cCI6MjE4MDUyODQwMiwiaWF0IjoxNzQ4NTI4NDAyfQ.Y0KWjDnQ1FN30jTPg0VD7pFdqj1yB0ZfK99qOZP0o8Y \ No newline at end of file