From 83c58849cfa83efd4700acdfdeed007f4f9bb8c8 Mon Sep 17 00:00:00 2001 From: frikky Date: Fri, 12 Feb 2021 10:08:26 +0100 Subject: [PATCH] Updates to app grabbing from backend --- backend/go-app/main.go | 4 +-- backend/go-app/walkoff.go | 60 ++++++++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/backend/go-app/main.go b/backend/go-app/main.go index aef237d7..80157f6e 100644 --- a/backend/go-app/main.go +++ b/backend/go-app/main.go @@ -2877,8 +2877,8 @@ func fixUserOrg(ctx context.Context, user *User) *User { // Used for testing only. Shouldn't impact production. func handleCors(resp http.ResponseWriter, request *http.Request) bool { - allowedOrigins := "http://localhost:3000" - //allowedOrigins := "http://localhost:3002" + //allowedOrigins := "http://localhost:3000" + allowedOrigins := "http://localhost:3002" resp.Header().Set("Vary", "Origin") resp.Header().Set("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me, Authorization") diff --git a/backend/go-app/walkoff.go b/backend/go-app/walkoff.go index 91d80d1d..8d3b0df6 100644 --- a/backend/go-app/walkoff.go +++ b/backend/go-app/walkoff.go @@ -4740,13 +4740,7 @@ func getWorkflowAppConfig(resp http.ResponseWriter, request *http.Request) { return } - user, userErr := handleApiAuthentication(resp, request) - if userErr != nil { - log.Printf("Api authentication failed in edit workflow: %s", userErr) - resp.WriteHeader(401) - resp.Write([]byte(`{"success": false}`)) - return - } + ctx := context.Background() location := strings.Split(request.URL.String(), "/") var fileId string @@ -4760,23 +4754,67 @@ func getWorkflowAppConfig(resp http.ResponseWriter, request *http.Request) { fileId = location[4] } - ctx := context.Background() app, err := getApp(ctx, fileId) if err != nil { - log.Printf("Error getting app (app config): %s", fileId) + log.Printf("[WARNING] Error getting app %s (app config): %s", fileId, err) + resp.WriteHeader(401) + resp.Write([]byte(`{"success": false, "reason": "App doesn't exist"}`)) + return + } + + //if IsValid bool `json:"is_valid" yaml:"is_valid" required:true datastore:"is_valid"` + // Sharing bool `json:"sharing" yaml:"sharing" required:false datastore:"sharing"` + log.Printf("Sharing: %s", app.Sharing) + log.Printf("Generated: %s", app.Generated) + log.Printf("Downloaded: %s", app.Downloaded) + + // FIXME - Handle sharing and such PROPERLY + if app.Sharing && app.Generated { + log.Printf("CAN SHARE APP!") + parsedApi, err := getOpenApiDatastore(ctx, fileId) + if err != nil { + log.Printf("[WARNING] OpenApi doesn't exist for: %s - err: %s", fileId, err) + resp.WriteHeader(401) + resp.Write([]byte(`{"success": false}`)) + return + } + + if len(parsedApi.ID) > 0 { + parsedApi.Success = true + } else { + parsedApi.Success = false + } + + //log.Printf("PARSEDAPI: %#v", parsedApi) + data, err := json.Marshal(parsedApi) + if err != nil { + log.Printf("[WARNING] Error parsing api json: %s", err) + resp.WriteHeader(422) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed marshalling new parsed swagger: %s"}`, err))) + return + } + + resp.WriteHeader(200) + resp.Write(data) + return + } + + user, userErr := handleApiAuthentication(resp, request) + if userErr != nil { + log.Printf("[WARNING] Api authentication failed in get app: %s", userErr) resp.WriteHeader(401) resp.Write([]byte(`{"success": false}`)) return } if user.Id != app.Owner && user.Role != "admin" { - log.Printf("Wrong user (%s) for app %s", user.Username, app.Name) + log.Printf("[WARNING] Wrong user (%s) for app %s", user.Username, app.Name) resp.WriteHeader(401) resp.Write([]byte(`{"success": false}`)) return } - log.Printf("Getting app %s", fileId) + log.Printf("Getting app %s (OpenAPI)", fileId) parsedApi, err := getOpenApiDatastore(ctx, fileId) if err != nil { log.Printf("OpenApi doesn't exist for: %s - err: %s", fileId, err)