Help Center/ OneAccess/ Developer Guide/ Developing Mapping Scripts
Updated on 2024-12-30 GMT+08:00

Developing Mapping Scripts

OneAccess can map the organization and user attributes of an enterprise to application systems. Application attribute values can be automatically generated using the mapping script. Additionally, the mapped attribute values can be restricted.

The following describes how to develop a mapping definition script.

Code Rule

OneAccess imposes several restrictions on mapping scripts, including disabling Java class, limiting CPU usage time, and restricting memory usage, the script format, and the use of certain functions.

  • Do not use Java class.

    If the following code is used:

    var File = Java.type('java.io.File'); File;

    The following exception will be thrown:

    java.lang.ClassNotFoundException: java.io.File
  • Limit the CPU usage time.

    By default, the execution time is limited to 1 second. If the execution time exceeds this limit, an exception will be thrown.

    If the following code is used:

    do{}while(true);

    The following exception will be thrown:

    ScriptCPUAbuseException
  • Limit the memory usage.

    The default size is 10 MB. If the size exceeds this limit, an exception will be thrown.

    If the following code is used:

    var o={},i=0; while (true) {o[i++] = 'abc'}

    The following exception will be thrown:

    ScriptMemoryAbuseException
  • Restrict the script format.

    To ensure proper script formatting, the if, while, and for statements must be enclosed in braces. Failure to do so may result in format errors.

    If the following code is used:

    var o={},i=0; while (true) o[i++] = 'abc';

    The following exception will be thrown:

    BracesException
  • Restrict the use of certain functions.

    The following functions cannot be used in the code. If they are included, they will have no effect.

    print 
    echo 
    quit 
    exit
    readFully 
    readLine 
    load
    loadWithNewGlobal

Example Scripts

  • User attributes

    The user object can be used in the script and contains all user attributes. The specific attributes are subject to the attribute code in the attribute definition. For details about managing user attributes, see Managing User Attributes. For details about managing account attributes, see 9.

    • Example 1: Map the user registration time:
      var createdAt = user.createdAt; 
      var date =new Date(createdAt); 
      date.toISOString();
    • Example 2: Map the mobile phone number of a user and hide the four digits in the middle:
      var mobile = user.mobile;
      var result = "";
      if(mobile.length == 15) {
        result = mobile.slice(0,7) + "****" + mobile.slice(-4);
      }
      result;
    • Example 3: Generate a user email address based on the username:
      var username = user.userName; 
      username.toLowerCase()+"@huaweicloud.com";
  • Organization attributes

    The organization object can be used in the script and contains all the attributes of the organization.

    • Example 1: Map an organization name.
      var orgName = organization.name;
      orgName.toString();
    • Example 2: Map organization code.
      var orgCode = organization.code;
      orgCode.toString();
    • Example 3: Map an organization ID.
      var id= organization.id;
      id.toString();
  • System attributes

    Obtain system attributes, such as date.

    Example: Map the time for tomorrow:

    var date =new Date();
    date.setDate(date.getDate()+1); 
    date.toISOString();