Ver Fonte

✨ feat(auth): 优化注册接口的用户响应格式

- 使用UserSchema替代硬编码的用户对象结构
- 添加parseWithAwait工具函数处理用户数据解析
- 移除用户响应中的密码字段,增强安全性
yourname há 4 meses atrás
pai
commit
23e886cae7
1 ficheiros alterados com 7 adições e 5 exclusões
  1. 7 5
      src/server/api/auth/register/create.ts

+ 7 - 5
src/server/api/auth/register/create.ts

@@ -5,6 +5,8 @@ import { z } from '@hono/zod-openapi'
 import { AppDataSource } from '../../../data-source'
 import { ErrorSchema } from '../../../utils/errorHandler'
 import { AuthContext } from '../../../types/context'
+import { UserSchema } from '@/server/modules/users/user.schema'
+import { parseWithAwait } from '@/server/utils/parseWithAwait'
 
 const RegisterSchema = z.object({
   username: z.string().min(3).openapi({
@@ -26,10 +28,7 @@ const TokenResponseSchema = z.object({
     example: 'jwt.token.here',
     description: 'JWT Token'
   }),
-  user: z.object({
-    id: z.number(),
-    username: z.string()
-  })
+  user: UserSchema.omit({ password: true })
 })
 
 const userService = new UserService(AppDataSource)
@@ -71,6 +70,9 @@ const app = new OpenAPIHono<AuthContext>().openapi(registerRoute, async (c) => {
   const { username, password, email } = c.req.valid('json')
   const user = await userService.createUser({ username, password, email })
   const token = authService.generateToken(user)
-  return c.json({ token, user }, 201)
+  return c.json({ 
+    token, 
+    user: await parseWithAwait(UserSchema, user) 
+  }, 201)
 })
 export default app