* refactor: fields/views/pages... * update * update * update * updates * updates * add yarn.lock * updates * updates * updates * updates * updates * updates * updates * updates * updates * developerMode * 一大波更新 * bugfix * fix: hide the sorting settings * fix: reload menu when menu is updated * 页面重构 * modify text * 补充细节 * system settings * 继续更新补充 * fix: 多级菜单支持 * 无限嵌套 * fix: icon * 省市区参数调整 * 表单描述、文案调整 * 支持草稿 * 邮箱登录 * 细节补充 * 菜单页面权限初步 * 详情页打开方式 * 菜单父级、草稿问题 * 描述文字 * 详情分组显示 * 状态改为 radio * 菜单权限 * 跳过省市区 api * 修复权限数据范围 * onDraft * 页面跳转 * 修改文案 * 注册、登录 * fix: 权限过滤问题 * 微调上传组件样式 * 0.4.0-alpha.0 * father-build * remove father-build * 细节调整
28 lines
774 B
TypeScript
28 lines
774 B
TypeScript
import cryptoRandomString from 'crypto-random-string';
|
|
import { STRING, FieldContext } from '@nocobase/database';
|
|
import {
|
|
DataTypes
|
|
} from 'sequelize';
|
|
|
|
export class RANDOMSTRING extends STRING {
|
|
constructor(options: any, context: FieldContext) {
|
|
super(options, context);
|
|
const Model = context.sourceTable.getModel();
|
|
const { name, randomString } = options;
|
|
randomString && Model.addHook('beforeValidate', (model) => {
|
|
const { template, ...opts } = randomString;
|
|
let value = cryptoRandomString(opts);
|
|
if (template && template.includes('%r')) {
|
|
value = template.replace('%r', value);
|
|
}
|
|
if (!model.get(name)) {
|
|
model.set(name, value);
|
|
}
|
|
});
|
|
}
|
|
|
|
getDataType() {
|
|
return DataTypes.STRING;
|
|
}
|
|
}
|