Explorar el Código

add validation checks for admin invite

abhishek9686 hace 1 año
padre
commit
b160445a18
Se han modificado 1 ficheros con 15 adiciones y 0 borrados
  1. 15 0
      pro/controllers/users.go

+ 15 - 0
pro/controllers/users.go

@@ -164,6 +164,21 @@ func inviteUsers(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		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 == 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 {