private void setSecurityConfig()

in odps-console-basic/src/main/java/com/aliyun/openservices/odps/console/commands/SetCommand.java [198:279]


  private void setSecurityConfig(String key) throws ODPSConsoleException, OdpsException {
    String project = getCurrentProject();
    Odps odps = getCurrentOdps();
    SecurityManager securityManager = odps.projects().get(project).getSecurityManager();
    SecurityConfiguration securityConfig = securityManager.getSecurityConfiguration();
    if (!isStringContainingWith(value)) {
      isBooleanStr(value, key);
    }
    if (PROJECT_PROTECTION.equalsIgnoreCase(key)) {
      if (isStringContainingWith(value)) {
        isBooleanStr(value.substring(0, value.toLowerCase().indexOf("with")).trim(), key);
        String fileName = value.substring(value.toLowerCase().indexOf("exception") + 9).trim();
        securityConfig.enableProjectProtection(FileUtil.getStringFromFile(fileName));
      } else {
        boolean enable = Boolean.parseBoolean(value);
        if (enable) {
          securityConfig.enableProjectProtection();
        } else {
          securityConfig.disableProjectProtection();
        }
      }
    }

    if (EXTERNAL_RESOURCE_ACCESS_CONTROL.equalsIgnoreCase(key)) {
      if (isStringContainingWith(value)) {
        String prefix = value.substring(0, value.toLowerCase().indexOf("with")).trim();
        isBooleanStr(prefix, key);
        boolean
            enable =
            Boolean.parseBoolean(prefix);
        if (!enable) {
          throw new ODPSConsoleException(
              "External resource locations can only be set when external resource access control is enabled");
        }
        String locations = value.substring(value.toLowerCase().indexOf("locations") + 9).trim();
        securityConfig.enableExternalResourceAccessControl(locations);
      } else {
        boolean enable = Boolean.parseBoolean(value);
        if (enable) {
          securityConfig.enableExternalResourceAccessControl();
        } else {
          securityConfig.disableExternalResourceAccessControl();
        }
      }
    }

    boolean enable = Boolean.parseBoolean(value);

    if (OBJECT_CREATOR_HAS_ACCESS_PERMISSION.equalsIgnoreCase(key)) {
      if (enable) {
        securityConfig.enableObjectCreatorHasAccessPermission();
      } else {
        securityConfig.disableObjectCreatorHasAccessPermission();
      }
    } else if (OBJECT_CREATOR_HAS_GRANT_PERMISSION.equalsIgnoreCase(key)) {
      if (enable) {
        securityConfig.enableObjectCreatorHasGrantPermission();
      } else {
        securityConfig.disableObjectCreatorHasGrantPermission();
      }
    } else if (CHECK_PERMISSION_USING_ACL.equalsIgnoreCase(key)) {
      if (enable) {
        securityConfig.enableCheckPermissionUsingAcl();
      } else {
        securityConfig.disableCheckPermissionUsingAcl();
      }
    } else if (CHECK_PERMISSION_USING_POLICY.equalsIgnoreCase(key)) {
      if (enable) {
        securityConfig.enableCheckPermissionUsingPolicy();
      } else {
        securityConfig.disableCheckPermissionUsingPolicy();
      }
    } else if (LABEL_SECURITY.equalsIgnoreCase(key)) {
      if (enable) {
        securityConfig.enableLabelSecurity();
      } else {
        securityConfig.disableLabelSecurity();
      }
    }

    securityManager.setSecurityConfiguration(securityConfig);
  }