diff --git a/shared/db/Sms.ts b/shared/db/Sms.ts index 4fb131daa..0ff508b72 100644 --- a/shared/db/Sms.ts +++ b/shared/db/Sms.ts @@ -26,6 +26,9 @@ export default class Sms extends BaseModel { @prop({ required: true }) countToday: number; + @prop({ required: true }) + isFixed: boolean; + public static async findByTel(tel: string, lean = true) { const sms: SmsType = await smsModel.findOne({ tel }).lean(lean); return sms; diff --git a/web-server/app/service/Auth.ts b/web-server/app/service/Auth.ts index 08acd1d65..a48ad9150 100644 --- a/web-server/app/service/Auth.ts +++ b/web-server/app/service/Auth.ts @@ -1,4 +1,4 @@ -import { FIX_SMS_CODE_TELS, COUNTER, HERO_SYSTEM_TYPE } from '@consts'; +import { COUNTER, HERO_SYSTEM_TYPE } from '@consts'; import { DEFAULT_HEROES } from '@consts'; import { HeroModel } from '@db/Hero'; import { RoleModel } from '@db/Role'; @@ -64,7 +64,7 @@ export default class Auth extends Service { } let code = ''; - if (sms && (!sms.used || FIX_SMS_CODE_TELS.indexOf(tel) !== -1)) { + if (sms && (!sms.used || sms.isFixed)) { code = sms.code; } else { code = this.ctx.service.utils.generateNum(6); @@ -94,16 +94,16 @@ export default class Auth extends Service { if (!_.isString(code) || code.length !== 6) { return ctx.service.utils.resResult(STATUS.WRONG_PARMS); } - // 指定手机号不检查验证码是否使用 - if (FIX_SMS_CODE_TELS.indexOf(tel) === -1) { - // 手机验证码核验 - const smsValid: boolean = await smsModel.validateSms(tel, code); - if (!smsValid) { - return ctx.service.utils.resResult(STATUS.SMS_INVALID); - } - } else { + + // 手机验证码核验 + const smsValid: boolean = await smsModel.validateSms(tel, code); + if (!smsValid) { const sms = await smsModel.findByTel(tel); - if (!sms || sms.code !== code) { + if(sms && sms.isFixed) { // 固定手机号登录 + if (sms.code !== code) { + return ctx.service.utils.resResult(STATUS.SMS_INVALID); + } + } else { return ctx.service.utils.resResult(STATUS.SMS_INVALID); } }