Quellcode durchsuchen

fix: panic if there is a object type in endpoint settings

Yeuoly vor 8 Monaten
Ursprung
Commit
47950efc55
2 geänderte Dateien mit 17 neuen und 4 gelöschten Zeilen
  1. 1 1
      internal/core/dify_invocation/types.go
  2. 16 3
      internal/service/setup_endpoint.go

+ 1 - 1
internal/core/dify_invocation/types.go

@@ -73,7 +73,7 @@ type InvokeAppSchema struct {
 	Inputs         map[string]any `json:"inputs" validate:"omitempty"`
 	Query          string         `json:"query" validate:"omitempty"`
 	ResponseMode   string         `json:"response_mode"`
-	ConversationId string         `json:"conversation_id"`
+	ConversationId string         `json:"conversation_id" validate:"omitempty"`
 	User           string         `json:"user" validate:"omitempty"`
 }
 

+ 16 - 3
internal/service/setup_endpoint.go

@@ -206,9 +206,22 @@ func UpdateEndpoint(endpoint_id string, tenant_id string, user_id string, name s
 	maskedSettings := encryption.MaskConfigCredentials(originalSettings, pluginDeclaration.Endpoint.Settings)
 
 	// check if settings is changed, replace the value is the same as masked_settings
-	for setting_name, value := range settings {
-		if maskedSettings[setting_name] == value {
-			settings[setting_name] = originalSettings[setting_name]
+	for settingName, value := range settings {
+		// skip it if the value is not secret-input
+		found := false
+		for _, config := range pluginDeclaration.Endpoint.Settings {
+			if config.Name == settingName && config.Type == plugin_entities.CONFIG_TYPE_SECRET_INPUT {
+				found = true
+				break
+			}
+		}
+
+		if !found {
+			continue
+		}
+
+		if maskedSettings[settingName] == value {
+			settings[settingName] = originalSettings[settingName]
 		}
 	}