目标:
通常情况下,用户账号的新增是平台自带的,管理员只需切换到“用户管理”界面即可新增,如果用户表额外新增了一些字段,平台自带的用户新增功能就无法满足需求,这种情况下可以另行设计一个用户新增的功能。
实现步骤:
1、为用户表添加账号、密码等额外属性。
2、创建“新增用户”的功能,添加新增用户表步骤
3、点击“设置”进入属性选择项卡,设置属性填写规则
姓名:必填
账号:必填,正则表达式(^[a-zA-Z][0-9a-zA-Z#!*.@_]{5,15}$),正则提示(账号以英文开头,6到16位的数字/字母/下划线),输入提示(以英文开头,6到16位的数字/字母/下划线)
密码:必填,正则表达式(^[a-zA-Z0-9!@#]{6,16}$),正则提示(6~16位数字/字母),输入提示(6~16位数字/字母)
角色:必填
其他属性根据需求设置。
4、添加编程步骤,编写以下代码
async function runProcess($model = model, $plugin = plugin, $params) {
let info = $params.info; //新增用户表步骤数据
let userEntity = "5fa4cf9e996d7677664eae25";//自行获取用户表entity
//将创建的用户数据删除(此数据没有_user属性,为无效用户,使用接口创建用户后会新建一条有效记录)
await $plugin.data.removeData(userEntity, info._id);
let roleField = info["5fa4cf9e996d7677664eae27"]; //用户表的角色属性,field自行获取
let roleEntity = "5fa4cf9e996d7677664eae22";//自行获取角色表id
let role = await $plugin.data.getData(roleEntity, roleField); //查询角色信息
let roleId = role._role; //角色id,注意:此id非角色表的数据_id
/**
* $plugin.admin.createUser(account,pwd,name,phone)
* 创建用户接口
* 此接口仅管理员有权限调用
* @params account 账号 必填
* @params pwd 密码 必填
* @params name 昵称 非必填
* @params phone 手机 非必填
* @return 成功返回用户_user
*/
let _user = await $plugin.admin.createUser(
info["60580e1f746bcb7068746e1a"],//account,field自行获取
roleId,//role
info["60580e24746bcb7068746e1b"],//pwq,field自行获取
info["60580de44ae8b87062fdf6b0"],//name,field自行获取
);
//根据返回的_user 查询接口创建的用户数据
let userQuery = await $plugin.data.queryData(userEntity, { _user });
if (userQuery.length > 0) {
let user = userQuery[0];
info["60580e24746bcb7068746e1b"] = "";//密码属性清空,一般不显示出来,field自行获取
//更新额外添加的属性
await $plugin.data.updateData(userEntity, user._id, info);
} else {
//创建失败,抛出错误提示
await $model.error(-1, "账号或手机号已存在!");
}
}
5、保存代码,将功能发布上线即可,需要特别注意的是:此功能只能由系统管理员账号使用,否则无法创建用户。
效果:
有兴趣的可以研究更新用户接口,同理仅管理员可调用
$plugin.admin.createUser(account, updated)
/**
* 更新用户接口
* 此接口仅管理员有权限调用
* @params account 账号 必填
* @params updated 更新数据json {account,pwd,name,phone}
* @return 成功返回 true
*/