更新时间:2024-05-31 GMT+08:00
分享

如何开发映射脚本

OneAccess支持将企业的组织与用户属性映射至应用系统。可通过映射脚本自动生成应用的属性值,同时,可限制映射至应用的属性值。

下面将为您介绍如何开发映射定义的脚本。

代码规则

在编写映射脚本时,OneAccess对脚本做了一些限制。包括禁止使用Java class、限制使用CPU的时间、限制内存的使用量、限定脚本格式、限制使用部分函数。

  • 禁止使用Java class。

    如果使用下面的代码:

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

    会抛出下面的异常:

    java.lang.ClassNotFoundException: java.io.File
  • 限制使用CPU的时间。

    默认限制执行时间为1秒,超过时间将抛出异常。

    如果使用下面的代码:

    do{}while(true);

    会抛出下面的异常:

    ScriptCPUAbuseException
  • 限制内存的使用量。

    默认大小为10M,超过将抛出异常。

    如果使用下面的代码:

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

    会抛出下面的异常:

    ScriptMemoryAbuseException
  • 限定脚本格式。

    为了方便重写脚本,脚本中的if、while、for语句必须使用大括号,否则将出现格式错误。

    如果使用下面的代码:

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

    会抛出下面的异常:

    BracesException
  • 限制使用部分函数。

    如下的函数不允许在代码中使用,如果使用,将没有任何效果。

    print 
    echo 
    quit 
    exit
    readFully 
    readLine 
    load
    loadWithNewGlobal

脚本示例

1、用户属性

在脚本中可以使用用户(user)这个对象,这个对象中包含了用户的所有属性,具体的属性以属性定义中的属性代码为准。用户属性定义可参考用户属性定义,账号属性定义可参考9

  • 示例1:映射用户注册时间:
    var createdAt = user.createdAt; 
    var date =new Date(createdAt); 
    date.toISOString();
  • 示例2:映射用户的手机号,并隐藏中间4位:
    var mobile = user.mobile;
    var result = "";
    if(mobile.length == 15) {
      result = mobile.slice(0,7) + "****" + mobile.slice(-4);
    }
    result;
  • 示例3:根据用户名生成用户邮箱:
    var username = user.userName; 
    username.toLowerCase()+"@huaweicloud.com";

2、组织属性

在脚本中可以使用组织(organization)这个对象,这个对象中包含了组织的所有属性。

  • 示例1:映射组织名称:
    var orgName = organization.name;
    orgName.toString();
  • 示例2:映射组织编码:
    var orgCode = organization.code;
    orgCode.toString();
  • 示例3:映射组织id:
    var id= organization.id;
    id.toString();

3、系统属性

获取系统属性,如日期。

  • 示例1:映射明天的当天时间:
    var date =new Date();
    date.setDate(date.getDate()+1); 
    date.toISOString();

相关文档