123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /**
- * 后台管理员数据模型
- *
- * @author CaiAoLin
- * @date 2017/6/1
- * @version
- */
- import BaseModel from "../../common/base/base_model";
- import ManagerSchema from "./schemas/manager";
- import crypto from "crypto";
- class ManagerModel extends BaseModel {
- /**
- * 构造函数
- *
- * @return {void}
- */
- constructor() {
- let parent = super();
- parent.model = ManagerSchema;
- parent.init();
- }
- /**
- * 设置场景
- *
- * @param {string} scene
- * @return {void}
- */
- setScene(scene = '') {
- switch (scene) {
- // 更改密码验证规则
- case 'changePassword':
- this.model.schema.path('password').required(true);
- break;
- }
- }
- /**
- * 获取列表
- *
- * @param {object} condition
- * @param {number} page
- * @return {Promise}
- */
- getList(condition = null, page = 1) {
- page = parseInt(page);
- page = page <= 1 ? 1 : page;
- let option = {page: page};
- return this.db.find(condition, null, option);
- }
- /**
- * 用户密码加密
- *
- * @param {string} token
- * @param {string} password
- * @return {string}
- */
- encryptPassword(token, password) {
- let encryptPassword = crypto.createHmac('sha1', token).update(password)
- .digest().toString('base64');
- return encryptPassword;
- }
- /**
- * 更改密码
- *
- * @param {string} username
- * @param {string} password
- * @param {string} newPassword
- * @throws {string}
- * @return {Promise}
- */
- async changePassword(username, password, newPassword) {
- // 查找对应用户
- let managerData = await this.findDataByCondition({username: username});
- if (managerData.length <= 0) {
- return false;
- }
- // 验证旧密码
- let encryptPassword = this.encryptPassword(managerData.token, password);
- if (encryptPassword !== managerData.password) {
- throw '用户名或密码错误';
- }
- // 加密新密码
- let encryptNewPassword = this.encryptPassword(managerData.token, newPassword);
- let result = await this.db.update({username: username}, {password: encryptNewPassword});
- return result.ok === 1;
- }
- /**
- * 创建管理员用户
- *
- * @return {Promise}
- */
- createManager() {
- let insertData = {
- username: 'test',
- password: this.encryptPassword('DjfDTys2dh2', 'test123'),
- token: 'DjfDTys2dh2',
- create_time: new Date().getTime(),
- role: 1,
- super_admin: 1
- };
- return this.db.create(insertData);
- }
- }
- export default ManagerModel;
|