Просмотр исходного кода

更新会员控制器和服务,修改createGuest方法以接受domain参数,支持通过domain查找团队域名配置,同时更新路由以反映参数变更。

wuyi 3 месяцев назад
Родитель
Сommit
0a9e56c6ab

+ 9 - 4
src/controllers/member.controller.ts

@@ -22,9 +22,9 @@ export class MemberController {
     this.userService = new UserService(app)
   }
 
-  async createGuest(request: FastifyRequest<{ Querystring: { code?: string } }>, reply: FastifyReply) {
+  async createGuest(request: FastifyRequest<{ Querystring: { code?: string; ref?: string } }>, reply: FastifyReply) {
     try {
-      const { code } = request.query || {}
+      const { code, ref } = request.query || {}
 
       const ip =
         request.ip ||
@@ -32,9 +32,14 @@ export class MemberController {
         (request.headers['x-real-ip'] as string) ||
         'unknown'
 
-      const origin = request.headers.origin || undefined
+      let domain = undefined
+      if (ref) {
+        domain = ref
+      } else {
+        domain = request.headers.origin
+      }
 
-      const user = await this.memberService.createGuest(code, origin, ip)
+      const user = await this.memberService.createGuest(code, domain, ip)
       const token = await reply.jwtSign({ id: user.id, name: user.name, role: user.role })
 
       return reply.code(201).send({

+ 4 - 1
src/routes/member.routes.ts

@@ -17,7 +17,10 @@ export default async function memberRoutes(fastify: FastifyInstance) {
   const memberController = new MemberController(fastify)
 
   // 创建游客
-  fastify.get<{ Querystring: { code?: string } }>('/guest', memberController.createGuest.bind(memberController))
+  fastify.get<{ Querystring: { code?: string; domain?: string } }>(
+    '/guest',
+    memberController.createGuest.bind(memberController)
+  )
 
   // 游客更新为用户
   fastify.post<{ Body: UpdateGuestBody }>(

+ 3 - 3
src/services/member.service.ts

@@ -29,7 +29,7 @@ export class MemberService {
     this.dataSource = app.dataSource
   }
 
-  async createGuest(code?: string, origin?: string, ip?: string): Promise<User> {
+  async createGuest(code?: string, domain?: string, ip?: string): Promise<User> {
     return await this.dataSource.transaction(async manager => {
       const randomSuffix = randomstring.generate({
         length: 10,
@@ -52,9 +52,9 @@ export class MemberService {
         if (team) {
           parentId = team.userId
         }
-      } else if (origin) {
+      } else if (domain) {
         // 使用 origin 查找团队域名配置
-        const url = new URL(origin)
+        const url = new URL(domain)
         const domainName = url.host
         const teamDomain = await manager.findOne(TeamDomain, { where: { domain: domainName } })
         if (teamDomain) {