53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
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)
|
|
}
|