diff --git a/back/methods/vn-user/recover-password.js b/back/methods/vn-user/recover-password.js index be3bdadb7..b0f7122b4 100644 --- a/back/methods/vn-user/recover-password.js +++ b/back/methods/vn-user/recover-password.js @@ -1,4 +1,3 @@ - module.exports = Self => { Self.remoteMethod('recoverPassword', { description: 'Send email to the user', @@ -22,17 +21,20 @@ module.exports = Self => { }); Self.recoverPassword = async function(user, app) { - const usesPhone = new RegExp(/([+]\d{2})?\d{9}/, 'g').test(user); - const account = await Self.app.models.Application.rawSql( - `SELECT c.id, c.phone, u.email from account.user u, vn.client c - where c.id=u.id and( u.email = ? or u.name = ? or c.phone = ?)`, - [user, user, user]); + const models = Self.app.models; - if (!account || account.length > 1) return; - const {email, phone} = account[0]; + const usesEmail = user.indexOf('@') !== -1; + if (!usesEmail) { + const account = await models.VnUser.findOne({ + fields: ['email'], + where: {name: user} + }); + if (!account) return; + user = account.email; + } try { - await Self.resetPassword({email, phone, emailTemplate: 'recover-password', app, usesPhone}); + await Self.resetPassword({email: user, emailTemplate: 'recover-password', app}); } catch (err) { if (err.code === 'EMAIL_NOT_FOUND') return;