create_password.js 792 B

123456789101112131415161718192021222324
  1. 'use strict';
  2. /**
  3. * 处理密码类型的数据的中间件
  4. * 在处理前拦截,在传来的数据中 找是否有 key 在keyWord列表中.
  5. * 将在列表中的key的值转换成{secret:${value}},再去提交,免去重写create函数
  6. */
  7. const _ = require('lodash');
  8. const { ObjectId } = require('mongoose').Types;
  9. const keyWord = [ 'password', 'passwd', 'pwd' ];
  10. module.exports = options => {
  11. return async function createPassword(ctx, next) {
  12. const { method, url } = ctx.request;
  13. if (method === 'POST') {
  14. const body = ctx.request.body;
  15. const mid = _.pick(body, keyWord);
  16. if (Object.keys(mid).length > 0) {
  17. for (const key of Object.keys(mid)) {
  18. ctx.request.body[key] = { secret: body[key] };
  19. }
  20. }
  21. }
  22. await next();
  23. };
  24. };