From 53b02e7c46889d5b6aaf22452e788e279ce675a2 Mon Sep 17 00:00:00 2001 From: frikky Date: Thu, 19 Aug 2021 00:58:01 +0200 Subject: [PATCH] #168: Added prototype of Oauth2 handler with example app --- backend/app_sdk/app_base.py | 4 +- backend/go-app/go.mod | 2 +- backend/go-app/walkoff.go | 41 +++++-- frontend/src/App.jsx | 2 + frontend/src/components/ParsedAction.jsx | 38 +++++- frontend/src/views/AngularWorkflow.jsx | 23 +++- frontend/src/views/SetAuthentication.jsx | 143 +++++++++++++++++++++++ functions/onprem/worker/worker.go | 1 - 8 files changed, 235 insertions(+), 19 deletions(-) create mode 100644 frontend/src/views/SetAuthentication.jsx diff --git a/backend/app_sdk/app_base.py b/backend/app_sdk/app_base.py index e0a5290a..077795d0 100644 --- a/backend/app_sdk/app_base.py +++ b/backend/app_sdk/app_base.py @@ -1529,6 +1529,8 @@ class AppBase: #print(globals()) print("Running liquid with data of length %d" % len(template)) run = Liquid(template, {'mode': 'python'}) + + # Can't handle self yet (?) ret = run.render(**globals()) return ret #try: @@ -2059,7 +2061,7 @@ class AppBase: #json_replacement = tmpitem.replace(actualitem[index][0], replacement, 1) #print("AFTER POST replacement: %s" % json_replacement) - #json_replacement = replacement + json_replacement = replacement try: json_replacement = json.loads(replacement) except json.decoder.JSONDecodeError as e: diff --git a/backend/go-app/go.mod b/backend/go-app/go.mod index f1f8c908..26ffa5d9 100644 --- a/backend/go-app/go.mod +++ b/backend/go-app/go.mod @@ -2,7 +2,7 @@ module shuffle go 1.13 -//replace github.com/frikky/shuffle-shared => ../../../../git/shuffle-shared +replace github.com/frikky/shuffle-shared => ../../../../git/shuffle-shared //replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi diff --git a/backend/go-app/walkoff.go b/backend/go-app/walkoff.go index 88c4b09b..d39f55e0 100644 --- a/backend/go-app/walkoff.go +++ b/backend/go-app/walkoff.go @@ -1552,7 +1552,6 @@ func handleExecution(id string, workflow shuffle.Workflow, request *http.Request } workflowExecution.ExecutionVariables = workflow.ExecutionVariables - if len(workflowExecution.Start) == 0 && len(workflowExecution.Workflow.Start) > 0 { workflowExecution.Start = workflowExecution.Workflow.Start } @@ -1621,20 +1620,40 @@ func handleExecution(id string, workflow shuffle.Workflow, request *http.Request return shuffle.WorkflowExecution{}, fmt.Sprintf("Auth ID %s doesn't exist", action.AuthenticationId), errors.New(fmt.Sprintf("Auth ID %s doesn't exist", action.AuthenticationId)) } - // Rebuild params with the right data. This is to prevent issues on the frontend newParams := []shuffle.WorkflowAppActionParameter{} - for _, param := range action.Parameters { + if strings.ToLower(curAuth.Type) == "oauth2" { + log.Printf("\n\nShould replace auth parameters!!!\n\n") - for _, authparam := range curAuth.Fields { - if param.Name == authparam.Key { - param.Value = authparam.Value - //log.Printf("Name: %s - value: %s", param.Name, param.Value) - //log.Printf("Name: %s - value: %s\n", param.Name, param.Value) - break - } + for _, param := range curAuth.Fields { + newParams = append(newParams, shuffle.WorkflowAppActionParameter{ + Name: param.Key, + Value: param.Value, + }) } - newParams = append(newParams, param) + for _, param := range action.Parameters { + log.Printf("Param: %#v", param) + if param.Configuration { + continue + } + + newParams = append(newParams, param) + } + } else { + // Rebuild params with the right data. This is to prevent issues on the frontend + for _, param := range action.Parameters { + + for _, authparam := range curAuth.Fields { + if param.Name == authparam.Key { + param.Value = authparam.Value + //log.Printf("Name: %s - value: %s", param.Name, param.Value) + //log.Printf("Name: %s - value: %s\n", param.Name, param.Value) + break + } + } + + newParams = append(newParams, param) + } } action.Parameters = newParams diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index a74153a9..c5ce52fb 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -22,6 +22,7 @@ import AdminSetup from "./views/AdminSetup"; import Admin from "./views/Admin"; import Docs from "./views/Docs"; import Introduction from "./views/Introduction"; +import SetAuthentication from "./views/SetAuthentication"; import LandingPageNew from "./views/LandingpageNew"; import LoginPage from "./views/LoginPage"; @@ -125,6 +126,7 @@ const App = (message, props) => { { window.location.pathname = "/docs/about" }} /> } /> } /> + } /> } /> diff --git a/frontend/src/components/ParsedAction.jsx b/frontend/src/components/ParsedAction.jsx index f20c3fdf..2ee180fb 100644 --- a/frontend/src/components/ParsedAction.jsx +++ b/frontend/src/components/ParsedAction.jsx @@ -46,7 +46,7 @@ const useStyles = makeStyles({ //) const ParsedAction = (props) => { - const {workflow, setWorkflow, setAction, setSelectedAction, setUpdate, appActionArguments, selectedApp, workflowExecutions, setSelectedResult, selectedAction, setSelectedApp, setSelectedTrigger, setSelectedEdge, setCurrentView, cy, setAuthenticationModalOpen,setVariablesModalOpen, setCodeModalOpen, selectedNameChange, rightsidebarStyle, showEnvironment, selectedActionEnvironment, environments, setNewSelectedAction, appApiViewStyle, globalUrl, setSelectedActionEnvironment, requiresAuthentication, hideExtraTypes, scrollConfig, setScrollConfig } = props + const {workflow, setWorkflow, setAction, setSelectedAction, setUpdate, appActionArguments, selectedApp, workflowExecutions, setSelectedResult, selectedAction, setSelectedApp, setSelectedTrigger, setSelectedEdge, setCurrentView, cy, setAuthenticationModalOpen,setVariablesModalOpen, setCodeModalOpen, selectedNameChange, rightsidebarStyle, showEnvironment, selectedActionEnvironment, environments, setNewSelectedAction, appApiViewStyle, globalUrl, setSelectedActionEnvironment, requiresAuthentication, hideExtraTypes, scrollConfig, setScrollConfig, authenticationType, appAuthentication, getAppAuthentication } = props const theme = useTheme(); const classes = useStyles() @@ -1389,6 +1389,42 @@ const ParsedAction = (props) => {