From e9645610d2aac8d318a0e0835e8583ec25db68b7 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 14 Feb 2024 08:08:47 +0100 Subject: [PATCH] refs #6427 feat: use query for multiple models --- back/methods/vn-user/recover-password.js | 34 +++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/back/methods/vn-user/recover-password.js b/back/methods/vn-user/recover-password.js index b0f7122b43..c1a5f67d76 100644 --- a/back/methods/vn-user/recover-password.js +++ b/back/methods/vn-user/recover-password.js @@ -1,3 +1,5 @@ +const server = require('vn-loopback/server/server'); + module.exports = Self => { Self.remoteMethod('recoverPassword', { description: 'Send email to the user', @@ -21,20 +23,38 @@ module.exports = Self => { }); Self.recoverPassword = async function(user, app) { - const models = Self.app.models; + // const models = Self.app.models; - const usesEmail = user.indexOf('@') !== -1; + // const usesEmail = user.indexOf('@') !== -1; + const usesPhone = new RegExp(/([+]\d{2})?\d{9}/, 'g').test(user); + /* if (usesPhone) { + const worker = await models.Client.findOne({ + fields: ['email', 'phone'], + where: {or: [{name: user, phone: user}]} + }); + if (!worker) return; + user = worker.email; + } if (!usesEmail) { const account = await models.VnUser.findOne({ - fields: ['email'], - where: {name: user} + fields: ['email', 'phone'], + where: {or: [{name: user, phone: user}]} }); if (!account) return; user = account.email; - } - + }*/ + 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]); + if (!account || account.length > 1) return; + const {email, phone} = account[0]; try { - await Self.resetPassword({email: user, emailTemplate: 'recover-password', app}); + // if (usesPhone) { + // await models.Sms.send(ctx, user, Self.resetPassword({email: user, usesPhone})); + // } else { + await Self.resetPassword({email, phone, emailTemplate: 'recover-password', app, usesPhone}); + // } } catch (err) { if (err.code === 'EMAIL_NOT_FOUND') return;