send-email-code.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const {
  2. verifyCaptcha
  3. } = require('../../lib/utils/captcha')
  4. const {
  5. EMAIL_SCENE
  6. } = require('../../common/constants')
  7. const {
  8. ERROR
  9. } = require('../../common/error')
  10. /**
  11. * 发送邮箱验证码,可用于登录、注册、绑定邮箱、修改密码等操作
  12. * @tutorial
  13. * @param {Object} params
  14. * @param {String} params.email 邮箱
  15. * @param {String} params.captcha 图形验证码
  16. * @param {String} params.scene 使用场景
  17. * @returns
  18. */
  19. module.exports = async function (params = {}) {
  20. const schema = {
  21. email: 'email',
  22. captcha: 'string',
  23. scene: 'string'
  24. }
  25. this.middleware.validate(params, schema)
  26. const {
  27. email,
  28. captcha,
  29. scene
  30. } = params
  31. if (!(Object.values(EMAIL_SCENE).includes(scene))) {
  32. throw {
  33. errCode: ERROR.INVALID_PARAM
  34. }
  35. }
  36. await verifyCaptcha.call(this, {
  37. scene: 'send-email-code',
  38. captcha
  39. })
  40. // -- 测试代码
  41. require('../../lib/utils/verify-code')
  42. .setEmailVerifyCode.call(this, {
  43. email,
  44. code: '123456',
  45. expiresIn: 180,
  46. scene
  47. })
  48. return {
  49. errCode: 'uni-id-invalid-mail-template',
  50. errMsg: `已启动测试模式,直接使用:123456作为邮箱验证码即可。\n如果是正式项目,需自行实现发送邮件的相关功能`
  51. }
  52. // -- 测试代码
  53. //发送邮件--需自行实现
  54. }