如何开发映射脚本
OneAccess支持将企业的组织与用户属性映射至应用系统。可通过映射脚本自动生成应用的属性值,同时,可限制映射至应用的属性值。
下面将为您介绍如何开发映射定义的脚本。
代码规则
在编写映射脚本时,OneAccess对脚本做了一些限制。包括禁止使用Java class、限制使用CPU的时间、限制内存的使用量、限定脚本格式、限制使用部分函数。
- 禁止使用Java class。
var File = Java.type('java.io.File'); File;
会抛出下面的异常:
java.lang.ClassNotFoundException: java.io.File
- 限制使用CPU的时间。
如果使用下面的代码:
do{}while(true);
会抛出下面的异常:
ScriptCPUAbuseException
- 限制内存的使用量。
如果使用下面的代码:
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();