Files
frp-panel/biz/master/client/create_client.go
VaalaCat f07c03ce68 feat: fx
2025-04-26 10:52:21 +00:00

47 lines
1.4 KiB
Go

package client
import (
"github.com/VaalaCat/frp-panel/common"
"github.com/VaalaCat/frp-panel/models"
"github.com/VaalaCat/frp-panel/pb"
"github.com/VaalaCat/frp-panel/services/app"
"github.com/VaalaCat/frp-panel/services/dao"
"github.com/VaalaCat/frp-panel/utils"
"github.com/google/uuid"
)
func InitClientHandler(c *app.Context, req *pb.InitClientRequest) (*pb.InitClientResponse, error) {
userClientID := req.GetClientId()
userInfo := common.GetUserInfo(c)
if !userInfo.Valid() {
return &pb.InitClientResponse{
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: "invalid user"},
}, nil
}
if len(userClientID) == 0 || !utils.IsClientIDPermited(userClientID) {
return &pb.InitClientResponse{
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: "invalid client id"},
}, nil
}
globalClientID := app.GlobalClientID(userInfo.GetUserName(), "c", userClientID)
if err := dao.NewQuery(c).CreateClient(userInfo,
&models.ClientEntity{
ClientID: globalClientID,
TenantID: userInfo.GetTenantID(),
UserID: userInfo.GetUserID(),
ConnectSecret: uuid.New().String(),
IsShadow: true,
}); err != nil {
return &pb.InitClientResponse{Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: err.Error()}}, err
}
return &pb.InitClientResponse{
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_SUCCESS, Message: "ok"},
ClientId: &globalClientID,
}, nil
}