Prechádzať zdrojové kódy

Merge branch 'NET-152/enrollment-keys-for-non-admins' into NET-260/rest-api-tests

Tobias Cudnik 2 rokov pred
rodič
commit
9096623f11
3 zmenil súbory, kde vykonal 7 pridanie a 18 odobranie
  1. 1 9
      controllers/enrollmentkeys.go
  2. 1 9
      controllers/hosts.go
  3. 5 0
      logic/security.go

+ 1 - 9
controllers/enrollmentkeys.go

@@ -40,15 +40,7 @@ func getEnrollmentKeys(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 	}
-	// handle masteradmin non-logged-in user
-	// TODO unify the user flow
-	headerNetworks, err := getHeaderNetworks(r)
-	if err != nil {
-		logger.Log(0, r.Header.Get("user"), "failed to parse networks: ", err.Error())
-		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
-		return
-	}
-	isMasterAdmin := len(headerNetworks) > 0 && headerNetworks[0] == logic.ALL_NETWORK_ACCESS
+	isMasterAdmin := r.Header.Get("ismaster") == "yes"
 	// regular user flow
 	user, err := logic.GetUser(r.Header.Get("user"))
 	if err != nil && !isMasterAdmin {

+ 1 - 9
controllers/hosts.go

@@ -52,15 +52,7 @@ func getHosts(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 	}
-	// handle masteradmin non-logged-in user
-	// TODO unify the user flow
-	headerNetworks, err := getHeaderNetworks(r)
-	if err != nil {
-		logger.Log(0, r.Header.Get("user"), "failed to parse networks: ", err.Error())
-		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
-		return
-	}
-	isMasterAdmin := len(headerNetworks) > 0 && headerNetworks[0] == logic.ALL_NETWORK_ACCESS
+	isMasterAdmin := r.Header.Get("ismaster") == "yes"
 	user, err := logic.GetUser(r.Header.Get("user"))
 	if err != nil && !isMasterAdmin {
 		logger.Log(0, r.Header.Get("user"), "failed to fetch user: ", err.Error())

+ 5 - 0
logic/security.go

@@ -31,6 +31,7 @@ func SecurityCheck(reqAdmin bool, next http.Handler) http.HandlerFunc {
 		var errorResponse = models.ErrorResponse{
 			Code: http.StatusForbidden, Message: Forbidden_Msg,
 		}
+		r.Header.Set("ismaster", "no")
 
 		var params = mux.Vars(r)
 		bearerToken := r.Header.Get("Authorization")
@@ -53,6 +54,10 @@ func SecurityCheck(reqAdmin bool, next http.Handler) http.HandlerFunc {
 			ReturnErrorResponse(w, r, errorResponse)
 			return
 		}
+		// detect masteradmin
+		if len(networks) > 0 && networks[0] == ALL_NETWORK_ACCESS {
+			r.Header.Set("ismaster", "yes")
+		}
 		networksJson, err := json.Marshal(&networks)
 		if err != nil {
 			ReturnErrorResponse(w, r, errorResponse)