我有代码可以为用户从 Rally 中删除访问权限
我们有大约 2000 个拉力赛项目
我实现了以下逻辑
- 从 csv 文件中读取用户列表
- 遍历每个用户
- 获取用户的项目权限 url - 写入文本文件
- 读取用户权限 - 循环
删除访问权限
try { QueryRequest usrRequest = new QueryRequest("User"); usrRequest.setLimit(9999); usrRequest.setFetch(new Fetch("FirstName","LastName","UserName","UserPermissions")); usrRequest.setQueryFilter(new QueryFilter("UserName", "=", userID)); BufferedWriter bw = new BufferedWriter(fw); QueryResponse usrResp = restApi.query(usrRequest); if (usrResp.wasSuccessful()) { for (JsonElement result : usrResp.getResults()) { JsonObject usrJson = result.getAsJsonObject(); try { userName = usrJson.get("UserName").getAsString(); if (userName.contains(userID)){ String userRef = usrJson.get("_ref").getAsString(); GetRequest userRequest = new GetRequest(userRef); GetResponse userResponse = restApi.get(userRequest); JsonObject userObj = userResponse.getObject(); JsonArray userPermArray = userObj.get("UserPermissions").getAsJsonArray(); for (int iter=0; iter<userPermArray.size(); iter++){ JsonObject prjPerm = userPermArray.get(iter).getAsJsonObject(); if (prjPerm.get("_type").getAsString().equalsIgnoreCase("ProjectPermission")){ tmp = prjPerm.get("_refObjectName").getAsString(); strArrray = tmp.split(" "); last=strArrray[strArrray.length-1]; prjName = tmp.substring(0, tmp.length() - last.length()); prjRef = prjPerm.get("_ref").getAsString(); if (prjName.trim().equalsIgnoreCase("MyLogins Default")){} else{ //if the project permission is not editor then add that project if((checkUserStatusToThisProject(restApi, prjRef, userRef))){ //prjPermList.put(prjName.trim(), prjRef); bw.write(prjName.trim()+"="+prjRef.trim()); bw.newLine(); // } } } } // end of for loop } // end of if }catch (Exception e) { log.info("Error in fetching project list for user to remove : "+e.getStackTrace()); // TODO: handle exception } }// end of for loop } // end of if bw.close(); }catch (Exception e) { e.printStackTrace(); }
上面的代码对于 4 个用户需要 3 个小时
我相信我在获取用户项目权限列表时犯了一些错误
在 checkUserStatusForThisProject 函数中 - 我正在检查该用户对该项目的角色类型?- 如果他是观众,那么我必须删除,否则(编辑)没有。
我的逻辑正确吗?或任何其他快速删除访问权限的方法?
请帮助
谢谢VG