package handlers import ( "errors" q "platform/web/queries" "platform/web/services" "github.com/gofiber/fiber/v2" "gorm.io/gorm" ) // region GetUserByToken type GetUserByTokenReq struct { Token string `json:"token" validate:"required"` } // GetUserByToken 通过token获取用户信息 func GetUserByToken(c *fiber.Ctx) error { // 解析请求参数 req := new(GetUserByTokenReq) if err := c.BodyParser(req); err != nil { return err } // 查询会话信息 session, err := services.Session.Find(c.Context(), req.Token) if err != nil { return err } // 查询用户信息 user, err := q.User.Debug(). Omit(q.User.Password, q.User.DeletedAt). Where(q.User.ID.Eq(session.Payload.Id)). Take() if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return fiber.NewError(fiber.StatusNotFound, "用户不存在") } return err } // 返回用户信息 return c.JSON(user) } // endregion