Quellcode durchsuchen

refactor(waf): 重构网站转发验证逻辑

- 修改 ValidateEditRequest 方法,移除未使用的参数
- 更新 ValidateDeletePermission 方法签名,直接使用主机ID
-优化 WebForwardingService 中的验证逻辑调用
fusu vor 1 Tag
Ursprung
Commit
8d81638340
2 geänderte Dateien mit 13 neuen und 8 gelöschten Zeilen
  1. 6 6
      internal/service/api/waf/aidedweb.go
  2. 7 2
      internal/service/api/waf/webforwarding.go

+ 6 - 6
internal/service/api/waf/aidedweb.go

@@ -17,8 +17,8 @@ import (
 type AidedWebService interface {
 	// 验证相关
 	ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require RequireResponse) error
-	ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest, require RequireResponse, oldData *model.WebForwarding) error
-	ValidateDeletePermission(oldData *model.WebForwarding, hostId int) error
+	ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error
+	ValidateDeletePermission(oldHostId int, hostId int) error
 	
 	// CDN网站管理
 	CreateCdnWebsite(ctx context.Context, formData v1.Website) (int64, error)
@@ -562,7 +562,7 @@ func (s *aidedWebService) ValidateAddRequest(ctx context.Context, req *v1.WebFor
 }
 
 // ValidateEditRequest 验证编辑请求
-func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest, require RequireResponse, oldData *model.WebForwarding) error {
+func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error {
 	if err := s.wafformatter.validateWafDomainCount(ctx, v1.GlobalRequire{
 		HostId:  req.HostId,
 		Domain:  req.WebForwardingData.Domain,
@@ -573,7 +573,7 @@ func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebFo
 	}
 
 	protocol := s.GetProtocolType(req.WebForwardingData.IsHttps)
-	if err := s.wafformatter.VerifyPort(ctx, protocol, int64(req.WebForwardingData.Id), req.WebForwardingData.Port, int64(require.HostId), req.WebForwardingData.Domain); err != nil {
+	if err := s.wafformatter.VerifyPort(ctx, protocol, int64(req.WebForwardingData.Id), req.WebForwardingData.Port, int64(req.HostId), req.WebForwardingData.Domain); err != nil {
 		return fmt.Errorf("端口 %d 验证失败: %w", req.WebForwardingData.Port, err)
 	}
 
@@ -581,8 +581,8 @@ func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebFo
 }
 
 // ValidateDeletePermission 验证删除权限
-func (s *aidedWebService) ValidateDeletePermission(oldData *model.WebForwarding, hostId int) error {
-	if oldData.HostId != hostId {
+func (s *aidedWebService) ValidateDeletePermission(oldHostId int, hostId int) error {
+	if oldHostId != hostId {
 		return fmt.Errorf("用户权限不足")
 	}
 	return nil

+ 7 - 2
internal/service/api/waf/webforwarding.go

@@ -217,6 +217,11 @@ func (s *webForwardingService) EditWebForwarding(ctx context.Context, req *v1.We
 	if err != nil {
 		return fmt.Errorf("获取原始Web转发数据失败: %w", err)
 	}
+	if s.aidedWeb.ValidateDeletePermission(oldData.HostId, req.HostId) != nil {
+		return fmt.Errorf("用户权限不足")
+	}
+
+
 	// 继承旧的证书ID和策略ID,以便后续逻辑处理
 	req.WebForwardingData.SslCertId = int64(oldData.SslCertId)
 	req.WebForwardingData.SslPolicyId = int64(oldData.SslPolicyId)
@@ -226,7 +231,7 @@ func (s *webForwardingService) EditWebForwarding(ctx context.Context, req *v1.We
 	if err != nil {
 		return err
 	}
-	if err := s.aidedWeb.ValidateEditRequest(ctx, req, require, oldData); err != nil {
+	if err := s.aidedWeb.ValidateEditRequest(ctx, req); err != nil {
 		return err
 	}
 
@@ -300,7 +305,7 @@ func (s *webForwardingService) deleteSingleWebForwarding(ctx context.Context, id
 	if err != nil {
 		return fmt.Errorf("获取Web转发数据失败: %w", err)
 	}
-	if err := s.aidedWeb.ValidateDeletePermission(oldData, hostId); err != nil {
+	if err := s.aidedWeb.ValidateDeletePermission(oldData.HostId, hostId); err != nil {
 		return err
 	}