فهرست منبع

fix network and user invite for master key access

abhishek9686 1 سال پیش
والد
کامیت
e90ad2634f
2فایلهای تغییر یافته به همراه29 افزوده شده و 23 حذف شده
  1. 9 6
      controllers/network.go
  2. 20 17
      pro/controllers/users.go

+ 9 - 6
controllers/network.go

@@ -58,13 +58,16 @@ func getNetworks(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 	}
-	username := r.Header.Get("user")
-	user, err := logic.GetUser(username)
-	if err != nil {
-		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
-		return
+	if r.Header.Get("ismaster") != "yes" {
+		username := r.Header.Get("user")
+		user, err := logic.GetUser(username)
+		if err != nil {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
+			return
+		}
+		allnetworks = logic.FilterNetworksByRole(allnetworks, *user)
 	}
-	allnetworks = logic.FilterNetworksByRole(allnetworks, *user)
+
 	logger.Log(2, r.Header.Get("user"), "fetched networks.")
 	logic.SortNetworks(allnetworks[:])
 	w.WriteHeader(http.StatusOK)

+ 20 - 17
pro/controllers/users.go

@@ -165,24 +165,27 @@ func inviteUsers(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	callerUserName := r.Header.Get("user")
-	caller, err := logic.GetUser(callerUserName)
-	if err != nil {
-		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "notfound"))
-		return
-	}
-	if inviteReq.PlatformRoleID == models.SuperAdminRole.String() {
-		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("super admin cannot be invited"), "badrequest"))
-		return
-	}
-	if inviteReq.PlatformRoleID == "" {
-		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("platform role id cannot be empty"), "badrequest"))
-		return
-	}
-	if (inviteReq.PlatformRoleID == models.AdminRole.String() ||
-		inviteReq.PlatformRoleID == models.SuperAdminRole.String()) && caller.PlatformRoleID != models.SuperAdminRole {
-		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("only superadmin can invite admin users"), "forbidden"))
-		return
+	if r.Header.Get("ismaster") != "yes" {
+		caller, err := logic.GetUser(callerUserName)
+		if err != nil {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "notfound"))
+			return
+		}
+		if inviteReq.PlatformRoleID == models.SuperAdminRole.String() {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("super admin cannot be invited"), "badrequest"))
+			return
+		}
+		if inviteReq.PlatformRoleID == "" {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("platform role id cannot be empty"), "badrequest"))
+			return
+		}
+		if (inviteReq.PlatformRoleID == models.AdminRole.String() ||
+			inviteReq.PlatformRoleID == models.SuperAdminRole.String()) && caller.PlatformRoleID != models.SuperAdminRole {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("only superadmin can invite admin users"), "forbidden"))
+			return
+		}
 	}
+
 	//validate Req
 	err = proLogic.IsGroupsValid(inviteReq.UserGroups)
 	if err != nil {