#223: Added import and export protections for subflow
This commit is contained in:
@@ -2332,15 +2332,40 @@ func saveWorkflow(resp http.ResponseWriter, request *http.Request) {
|
||||
trigger.Status = "stopped"
|
||||
}
|
||||
} else if trigger.TriggerType == "SUBFLOW" {
|
||||
for _, param := range trigger.Parameters {
|
||||
for index, param := range trigger.Parameters {
|
||||
if len(param.Value) == 0 && param.Name != "argument" {
|
||||
workflow.IsValid = false
|
||||
workflow.Errors = []string{"Trigger is missing a parameter: %s", param.Name}
|
||||
log.Printf("Param: %#v", param)
|
||||
if param.Name == "user_apikey" {
|
||||
apikey := ""
|
||||
if len(user.ApiKey) > 0 {
|
||||
apikey = user.ApiKey
|
||||
} else {
|
||||
user, err = generateApikey(ctx, user)
|
||||
if err != nil {
|
||||
workflow.IsValid = false
|
||||
workflow.Errors = []string{"Trigger is missing a parameter: %s", param.Name}
|
||||
|
||||
log.Printf("No type specified for user input node")
|
||||
resp.WriteHeader(401)
|
||||
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Trigger %s is missing the parameter %s"}`, trigger.Label, param.Name)))
|
||||
return
|
||||
log.Printf("No type specified for user input node")
|
||||
resp.WriteHeader(401)
|
||||
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Trigger %s is missing the parameter %s"}`, trigger.Label, param.Name)))
|
||||
return
|
||||
}
|
||||
|
||||
apikey = user.ApiKey
|
||||
}
|
||||
|
||||
log.Printf("[INFO] Set apikey in subflow trigger for user during save")
|
||||
trigger.Parameters[index].Value = apikey
|
||||
} else {
|
||||
|
||||
workflow.IsValid = false
|
||||
workflow.Errors = []string{"Trigger is missing a parameter: %s", param.Name}
|
||||
|
||||
log.Printf("No type specified for user input node")
|
||||
resp.WriteHeader(401)
|
||||
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Trigger %s is missing the parameter %s"}`, trigger.Label, param.Name)))
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if trigger.TriggerType == "WEBHOOK" && trigger.Status != "uninitialized" {
|
||||
|
||||
@@ -234,8 +234,8 @@ const Workflows = (props) => {
|
||||
color: "#ffffff",
|
||||
width: "100%",
|
||||
display: "flex",
|
||||
minWidth: 1366,
|
||||
maxWidth: 1766,
|
||||
minWidth: 1024,
|
||||
maxWidth: 1024,
|
||||
margin: "auto",
|
||||
maxHeight: "90vh",
|
||||
}
|
||||
@@ -393,8 +393,15 @@ const Workflows = (props) => {
|
||||
|
||||
data["owner"] = ""
|
||||
for (var key in data.triggers) {
|
||||
if (data.triggers[key].status == "running") {
|
||||
data.triggers[key].status = "stopped"
|
||||
const trigger = data.triggers[key]
|
||||
if (trigger.app_name === "Shuffle Workflow") {
|
||||
if (trigger.parameters.length > 2) {
|
||||
trigger.parameters[2].value = ""
|
||||
}
|
||||
}
|
||||
|
||||
if (trigger.status == "running") {
|
||||
trigger.status = "stopped"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,6 +409,8 @@ const Workflows = (props) => {
|
||||
data.actions[key].authentication_id = ""
|
||||
}
|
||||
|
||||
//return
|
||||
|
||||
data["org"] = []
|
||||
data["org_id"] = ""
|
||||
data.execution_org = {"id": ""}
|
||||
@@ -907,7 +916,7 @@ const Workflows = (props) => {
|
||||
</div>
|
||||
:
|
||||
<h4>
|
||||
Executions have been moved to the Workflow itself. <Link to={`/workflows/${selectedWorkflow.id}?view=executions`} style={{textDecoration: "none", color: "#f85a3e"}}>Click here to see them</Link>
|
||||
Executions have been moved to the Workflow itself. <div/><Link to={`/workflows/${selectedWorkflow.id}?view=executions`} style={{textDecoration: "none", color: "#f85a3e"}}>Click here to see them</Link>
|
||||
</h4>
|
||||
)
|
||||
}
|
||||
@@ -1230,10 +1239,11 @@ const Workflows = (props) => {
|
||||
</div>
|
||||
<div style={{flex: viewSize.executionsView, marginLeft: "10px", marginRight: "10px"}}>
|
||||
<div style={{display: "flex"}}>
|
||||
<div style={{flex: "10"}}>
|
||||
<div style={{flex: 10}}>
|
||||
<h2>Executions: {selectedWorkflow.name}</h2>
|
||||
</div>
|
||||
<div style={{flex: "1"}}>
|
||||
{/*
|
||||
<div style={{flex: 1}}>
|
||||
<Button color="primary" style={{marginTop: "20px"}} variant="text" onClick={() => {
|
||||
alert.info("Refreshing executions");
|
||||
//getWorkflowExecution(selectedWorkflow.id)
|
||||
@@ -1241,6 +1251,7 @@ const Workflows = (props) => {
|
||||
<CachedIcon />
|
||||
</Button>
|
||||
</div>
|
||||
*/}
|
||||
</div>
|
||||
<Divider style={{marginBottom: "10px", height: "1px", width: "100%", backgroundColor: dividerColor}}/>
|
||||
<div style={scrollStyle}>
|
||||
|
||||
Reference in New Issue
Block a user