package handlers import ( "platform/web/models" q "platform/web/queries" "time" "github.com/gofiber/fiber/v2" "golang.org/x/crypto/bcrypt" ) type CreateClientReq struct { ClientID string `query:"client_id"` ClientSecret string `query:"client_secret"` } func CreateClient(c *fiber.Ctx) error { // 验证请求参数 req := new(CreateClientReq) if err := c.QueryParser(req); err != nil { return err } if req.ClientID == "" { return fiber.NewError(fiber.StatusBadRequest, "client_id不能为空") } if req.ClientSecret == "" { return fiber.NewError(fiber.StatusBadRequest, "client_secret不能为空") } // 创建客户端 hashedSecret, err := bcrypt.GenerateFromPassword([]byte(req.ClientSecret), bcrypt.DefaultCost) if err != nil { return err } client := &models.Client{ ClientID: req.ClientID, ClientSecret: string(hashedSecret), Name: "默认客户端 - " + time.Now().String(), Spec: 0, GrantCode: true, GrantClient: true, GrantRefresh: true, Version: 0, } err = q.Client.Create(client) if err != nil { return err } return c.JSON(client) }