mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 00:10:25 +08:00 
			
		
		
		
	reafctor: 团队管理与授权凭证优化
This commit is contained in:
		@@ -1,59 +0,0 @@
 | 
			
		||||
package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"mayfly-go/internal/machine/api/form"
 | 
			
		||||
	"mayfly-go/internal/machine/api/vo"
 | 
			
		||||
	"mayfly-go/internal/machine/application"
 | 
			
		||||
	"mayfly-go/internal/machine/domain/entity"
 | 
			
		||||
	"mayfly-go/pkg/biz"
 | 
			
		||||
	"mayfly-go/pkg/req"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type AuthCert struct {
 | 
			
		||||
	AuthCertApp application.AuthCert `inject:""`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ac *AuthCert) BaseAuthCerts(rc *req.Ctx) {
 | 
			
		||||
	queryCond, page := req.BindQueryAndPage(rc, new(entity.AuthCertQuery))
 | 
			
		||||
	res, err := ac.AuthCertApp.GetPageList(queryCond, page, new([]vo.AuthCertBaseVO))
 | 
			
		||||
	biz.ErrIsNil(err)
 | 
			
		||||
	rc.ResData = res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ac *AuthCert) AuthCerts(rc *req.Ctx) {
 | 
			
		||||
	queryCond, page := req.BindQueryAndPage(rc, new(entity.AuthCertQuery))
 | 
			
		||||
 | 
			
		||||
	res := new([]*entity.AuthCert)
 | 
			
		||||
	pageRes, err := ac.AuthCertApp.GetPageList(queryCond, page, res)
 | 
			
		||||
	biz.ErrIsNil(err)
 | 
			
		||||
	for _, r := range *res {
 | 
			
		||||
		r.PwdDecrypt()
 | 
			
		||||
	}
 | 
			
		||||
	rc.ResData = pageRes
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *AuthCert) SaveAuthCert(rc *req.Ctx) {
 | 
			
		||||
	acForm := &form.AuthCertForm{}
 | 
			
		||||
	ac := req.BindJsonAndCopyTo(rc, acForm, new(entity.AuthCert))
 | 
			
		||||
 | 
			
		||||
	// 脱敏记录日志
 | 
			
		||||
	acForm.Passphrase = "***"
 | 
			
		||||
	acForm.Password = "***"
 | 
			
		||||
	rc.ReqParam = acForm
 | 
			
		||||
 | 
			
		||||
	biz.ErrIsNil(c.AuthCertApp.Save(rc.MetaCtx, ac))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *AuthCert) Delete(rc *req.Ctx) {
 | 
			
		||||
	idsStr := rc.PathParam("id")
 | 
			
		||||
	rc.ReqParam = idsStr
 | 
			
		||||
	ids := strings.Split(idsStr, ",")
 | 
			
		||||
 | 
			
		||||
	for _, v := range ids {
 | 
			
		||||
		value, err := strconv.Atoi(v)
 | 
			
		||||
		biz.ErrIsNilAppendErr(err, "string类型转换为int异常: %s")
 | 
			
		||||
		c.AuthCertApp.DeleteById(rc.MetaCtx, uint64(value))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -33,17 +33,6 @@ type MachineScriptForm struct {
 | 
			
		||||
	Script      string `json:"script" binding:"required"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 授权凭证
 | 
			
		||||
type AuthCertForm struct {
 | 
			
		||||
	Id         uint64 `json:"id"`
 | 
			
		||||
	Name       string `json:"name" binding:"required"`
 | 
			
		||||
	AuthMethod int8   `json:"authMethod" binding:"required"` // 1.密码 2.秘钥
 | 
			
		||||
	Username   string `json:"username"`
 | 
			
		||||
	Password   string `json:"password"`   // 密码or私钥
 | 
			
		||||
	Passphrase string `json:"passphrase"` // 私钥口令
 | 
			
		||||
	Remark     string `json:"remark"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 机器记录任务
 | 
			
		||||
type MachineCronJobForm struct {
 | 
			
		||||
	Id              uint64   `json:"id"`
 | 
			
		||||
 
 | 
			
		||||
@@ -50,10 +50,9 @@ func (m *MachineScript) DeleteMachineScript(rc *req.Ctx) {
 | 
			
		||||
 | 
			
		||||
func (m *MachineScript) RunMachineScript(rc *req.Ctx) {
 | 
			
		||||
	scriptId := GetMachineScriptId(rc)
 | 
			
		||||
	machineId := GetMachineId(rc)
 | 
			
		||||
	ac := GetMachineAc(rc)
 | 
			
		||||
	ms, err := m.MachineScriptApp.GetById(new(entity.MachineScript), scriptId, "MachineId", "Name", "Script")
 | 
			
		||||
	biz.ErrIsNil(err, "该脚本不存在")
 | 
			
		||||
	biz.IsTrue(ms.MachineId == application.Common_Script_Machine_Id || ms.MachineId == machineId, "该脚本不属于该机器")
 | 
			
		||||
 | 
			
		||||
	script := ms.Script
 | 
			
		||||
	// 如果有脚本参数,则用脚本参数替换脚本中的模板占位符参数
 | 
			
		||||
@@ -61,7 +60,7 @@ func (m *MachineScript) RunMachineScript(rc *req.Ctx) {
 | 
			
		||||
		script, err = stringx.TemplateParse(ms.Script, jsonx.ToMap(params))
 | 
			
		||||
		biz.ErrIsNilAppendErr(err, "脚本模板参数解析失败: %s")
 | 
			
		||||
	}
 | 
			
		||||
	cli, err := m.MachineApp.GetCli(machineId)
 | 
			
		||||
	cli, err := m.MachineApp.GetCliByAc(ac)
 | 
			
		||||
	biz.ErrIsNilAppendErr(err, "获取客户端连接失败: %s")
 | 
			
		||||
	biz.ErrIsNilAppendErr(m.TagApp.CanAccess(rc.GetLoginAccount().Id, cli.Info.TagPath...), "%s")
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,13 +5,6 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// 授权凭证基础信息
 | 
			
		||||
type AuthCertBaseVO struct {
 | 
			
		||||
	Id         int    `json:"id"`
 | 
			
		||||
	Name       string `json:"name"`
 | 
			
		||||
	AuthMethod int8   `json:"authMethod"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type MachineVO struct {
 | 
			
		||||
	tagentity.ResourceTags // 标签信息
 | 
			
		||||
	tagentity.AuthCerts    // 授权凭证信息
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user