예제 #1
0
  /**
   * This handler removes users for specified realm.
   *
   * @param handlerCtx The HandlerContext.
   */
  @Handler(
      id = "removeUser",
      input = {
        @HandlerInput(name = "Realm", type = String.class, required = true),
        @HandlerInput(name = "configName", type = String.class, required = true),
        @HandlerInput(name = "selectedRows", type = List.class, required = true)
      },
      output = {@HandlerOutput(name = "result", type = java.util.List.class)})
  public static void removeUser(HandlerContext handlerCtx) {

    String error = null;
    String realmName = (String) handlerCtx.getInputValue("Realm");
    String configName = (String) handlerCtx.getInputValue("configName");
    try {
      List obj = (List) handlerCtx.getInputValue("selectedRows");
      List<Map> selectedRows = (List) obj;
      for (Map oneRow : selectedRows) {
        String user = (String) oneRow.get("name");
        String endpoint =
            GuiUtil.getSessionValue("REST_URL")
                + "/configs/config/"
                + configName
                + "/admin-service/jmx-connector/system.json";
        Map<String, Object> responseMap =
            RestUtil.restRequest(endpoint, null, "get", handlerCtx, false);
        Map<String, Object> valueMap = (Map<String, Object>) responseMap.get("data");
        valueMap =
            (Map<String, Object>)
                ((Map<String, Object>) valueMap.get("extraProperties")).get("entity");
        String authRealm = (String) valueMap.get("authRealmName");
        if (realmName.equals(authRealm) && user.equals(GuiUtil.getSessionValue("userName"))) {
          error = GuiUtil.getMessage(COMMON_BUNDLE, "msg.error.cannotDeleteCurrent");
          continue;
        } else {
          HashMap attrs = new HashMap<String, Object>();
          endpoint =
              GuiUtil.getSessionValue("REST_URL")
                  + "/configs/config/"
                  + configName
                  + "/security-service/auth-realm/"
                  + realmName
                  + "/delete-user?target="
                  + configName;
          attrs.put("name", user);
          RestResponse response = RestUtil.delete(endpoint, attrs);
          if (!response.isSuccess()) {
            GuiUtil.getLogger()
                .severe("Remove user failed.  parent=" + endpoint + "; attrs =" + attrs);
            error = GuiUtil.getMessage("msg.error.checkLog");
          }
        }
      }
      if (error != null) {
        GuiUtil.prepareAlert("error", error, null);
      }
    } catch (Exception ex) {
      GuiUtil.handleException(handlerCtx, ex);
    }
  }