添加字段验证
//引入 joi 模块
const Joi = require('joi');
module.exports = async(req, res) => {
// 定义规则对象
const schema = {
username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合规则...')),
email: Joi.string().email().required().error(new Error('邮箱格式不符合要求...')),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}/).required().error(new Error('密码格式不符合要求...')),
role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
state: Joi.number().valid(0, 1).required().error(new Error('状态值非法...'))
};
try {
// 实施验证
await Joi.validate(req.body, schema);
} catch (e) {
// 验证没有通过
res.redirect(`/admin/user-edit?message=${e.message}`);
}
res.send(req.body);
}
//引入 joi 模块
const Joi = require('joi');
// 引入用户集合的构造函数
const { User } = require('../../model/user');
// 引入加密模块
const bcrypt = require('bcrypt');
module.exports = async(req, res) => {
// 定义规则对象
const schema = {
username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合规则...')),
email: Joi.string().email().required().error(new Error('邮箱格式不符合要求...')),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}/).required().error(new Error('密码格式不符合要求...')),
role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
state: Joi.number().valid(0, 1).required().error(new Error('状态值非法...'))
};
try {
// 实施验证
await Joi.validate(req.body, schema);
} catch (e) {
// 验证没有通过
return res.redirect(`/admin/user-edit?message=${e.message}`);
}
// 根据邮箱地址查询用户是否存在
let user = await User.findOne({ email: req.body.email });
// 如果存在
if (user) {
return res.redirect(`/admin/user-edit?message=邮箱地址被占用...`);
}
// 对密码进行加密处理 生成随机字符串 bcrypt
const salt = await bcrypt.genSalt(10);
// 加密
const password = await bcrypt.hash(req.body.password, salt);
// 替换密码
req.body.password = password;
// 将用户信息添加到数据库中
await User.create(req.body);
res.redirect('/admin/user');
}
添加用户完成