1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const {
- sendSmsCode
- } = require('../../lib/utils/sms')
- const {
- verifyCaptcha
- } = require('../../lib/utils/captcha')
- const {
- SMS_SCENE
- } = require('../../common/constants')
- const {
- ERROR
- } = require('../../common/error')
- /**
- * 发送短信验证码
- * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#send-sms-code
- * @param {Object} params
- * @param {String} params.mobile 手机号
- * @param {String} params.captcha 图形验证码
- * @param {String} params.scene 短信验证码使用场景
- * @returns
- */
- module.exports = async function (params = {}) {
- const schema = {
- mobile: 'mobile',
- captcha: 'string',
- scene: 'string'
- }
- this.middleware.validate(params, schema)
- const {
- mobile,
- captcha,
- scene
- } = params
- if (!(Object.values(SMS_SCENE).includes(scene))) {
- throw {
- errCode: ERROR.INVALID_PARAM
- }
- }
- await verifyCaptcha.call(this, {
- scene: 'send-sms-code',
- captcha
- })
- // -- 测试代码
- const {
- templateId
- } = (this.config.service &&
- this.config.service.sms &&
- this.config.service.sms.scene &&
- this.config.service.sms.scene[scene]) || {}
- if (!templateId) {
- require('../../lib/utils/verify-code')
- .setMobileVerifyCode.call(this, {
- mobile: params.mobile,
- code: '123456',
- expiresIn: 180,
- scene
- })
- return {
- errCode: 'uni-id-invalid-sms-template-id',
- errMsg: `未找到scene=${scene},的短信模版templateId。\n已启动测试模式,直接使用:123456作为短信验证码即可。\n如果是正式项目,请在路径:/common/uni-config-center/uni-id/config.json中service->sms中配置密钥等信息\n更多详情:https://uniapp.dcloud.io/uniCloud/uni-id.html#config`
- }
- }
- // -- 测试代码
- return sendSmsCode.call(this, {
- mobile,
- scene
- })
- }
|