Appearance
监听用户的创建和登录
背景
某项目需要监听用户账号登录,自动更新用户在岗状态
实现步骤
我们现在可以通过以下方式实现该功能:
新建一张用户数据表,创建单文本字段:用户名 name,下拉列表字段:在岗状态 dutyStatus
接着设置在岗状态的下拉选项值
在表格设置>>工具栏,添加创建按钮
此节重点不在数据表的各种操作,详细操作请查看文档-创建数据表模块
现在创建一个新的用户,这个账号是无法登录应用的,我们需要在创建用户记录的时候,把该用户添加进应用成员中去,并分配角色,操作如下:
点击创建按钮右侧的编辑图标,进入创建按钮的编辑页面,执行操作选择调用自动化
这里我们通过自动化去创建用户数据,自动化程序如下图:打开记录创建页面->代码片段(把该用户添加进应用成员中去,并分配角色)
代码片段如下:
javascriptconst formRecord = automatic.getVar('formRecord') const systemUser = { id: formRecord.id, name: formRecord.name, userName: formRecord.name, password: formRecord.name //默认密码为用户名 }; //添加前先判断用户是否存在 let accountId = null; const oldAccount = informat.system.getAccount(formRecord.id) if (oldAccount) { accountId = oldAccount.id; } else { // 增加系统账号 accountId=informat.system.addAccount(systemUser); } // 加入到团队中 根目录、成员角色 if(accountId){ informat.company.addCompanyMember(accountId,[], ['member']); } informat.user.addUser(formRecord.id,['admin'])
这样我们新建一个账号就能登录应用了
创建用户
登录
当用户登录应用的时候,在岗状态如何自动设置成在岗,我们需要用到全局监听器,具体实现如下:
全局设置>>监听器>>创建监听器
监听事件选择 用户进入应用之后->调用自动化(更新用户在岗状态)
自动化程序(更新用户在岗状态)如下:
这里重点是输入参数的解析,我们点击左下角新增参数,然后往下翻,选择监听器事件,命名eventValue
可以打印出来看看数据结构。
于是,我们可以通过表达式:${eventValue.eventContent.user.id}获取登录用户ID,匹配记录如下:
更新字段:在岗状态为在岗(onDuty)
效果
登录用户CJ1000
在岗状态自动被设置为在岗
最后提一点,如果想要让新建的用户有设计应用权限,需要去应用管理>>应用设计>>选择成员