4077-login_recover-password & account_verifyEmail #1063
|
@ -1,4 +1,4 @@
|
||||||
const UserError = require('vn-loopback/util/user-error');
|
const {Email} = require('vn-print');
|
||||||
|
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethodCtx('recoverPassword', {
|
Self.remoteMethodCtx('recoverPassword', {
|
||||||
|
@ -20,7 +20,6 @@ module.exports = Self => {
|
||||||
Self.recoverPassword = async function(ctx, email) {
|
Self.recoverPassword = async function(ctx, email) {
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
const origin = ctx.req.headers.origin;
|
const origin = ctx.req.headers.origin;
|
||||||
alexm marked this conversation as resolved
Outdated
|
|||||||
const $t = ctx.req.__; // $translate
|
|
||||||
const ttl = 1209600;
|
const ttl = 1209600;
|
||||||
|
|
||||||
const user = await models.Account.findOne({
|
const user = await models.Account.findOne({
|
||||||
|
@ -38,21 +37,14 @@ module.exports = Self => {
|
||||||
userId: user.id
|
userId: user.id
|
||||||
});
|
});
|
||||||
|
|
||||||
const title = $t('Recover password');
|
const url = `${origin}/#!/account/${user.id}/basic-data?access_token=${token.id}`;
|
||||||
const body = `
|
const params = {
|
||||||
<p>
|
recipient: 'alexm@verdnatura.es',
|
||||||
alexm marked this conversation as resolved
Outdated
juan
commented
Gasta una plantilla ejs com ací, no fa falta afegir dependencies: Gasta una plantilla *ejs* com ací, no fa falta afegir dependencies:
* https://gitea.verdnatura.es/juan/hedera-web/src/branch/master/back/common/models/user.js#L52
|
|||||||
${$t('Click on the following link to change your password')}:
|
url: url
|
||||||
</p>
|
};
|
||||||
</b>
|
|
||||||
<a href="${origin}/#!/account/${user.id}/basic-data?access_token=${token.id}">
|
|
||||||
${title}
|
|
||||||
</a>`;
|
|
||||||
|
|
||||||
await Self.rawSql(`CALL vn.mail_insert(?,?,?,?)`, [
|
const sendEmail = new Email('recover-password', params);
|
||||||
email,
|
|
||||||
null,
|
return sendEmail.send();
|
||||||
title,
|
|
||||||
body
|
|
||||||
]);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -234,10 +234,8 @@
|
||||||
"Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.",
|
"Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.",
|
||||||
"Dirección incorrecta": "Dirección incorrecta",
|
"Dirección incorrecta": "Dirección incorrecta",
|
||||||
"Recover password": "Recuperar contraseña",
|
"Recover password": "Recuperar contraseña",
|
||||||
"Click on the following link to change your password.": "Pulsa en el siguiente link para cambiar tu contraseña.",
|
|
||||||
"Verify email": "Verificar correo",
|
"Verify email": "Verificar correo",
|
||||||
"Click on the following link to verify this email. If you haven't requested this email, just ignore it": "Pulsa en el siguiente link para verificar este correo. Si no has pedido este correo, simplemente ignóralo.",
|
"Click on the following link to verify this email. If you haven't requested this email, just ignore it": "Pulsa en el siguiente link para verificar este correo. Si no has pedido este correo, simplemente ignóralo.",
|
||||||
"Click on the following link to change your password": "Click on the following link to change your password",
|
|
||||||
"Landing cannot be lesser than shipment": "Landing cannot be lesser than shipment",
|
"Landing cannot be lesser than shipment": "Landing cannot be lesser than shipment",
|
||||||
"Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador",
|
"Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador",
|
||||||
"Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador",
|
"Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador",
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
const Stylesheet = require(`vn-print/core/stylesheet`);
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const vnPrintPath = path.resolve('print');
|
||||||
|
|
||||||
|
module.exports = new Stylesheet([
|
||||||
|
`${vnPrintPath}/common/css/spacing.css`,
|
||||||
|
`${vnPrintPath}/common/css/misc.css`,
|
||||||
|
`${vnPrintPath}/common/css/layout.css`,
|
||||||
|
`${vnPrintPath}/common/css/email.css`,
|
||||||
|
`${__dirname}/style.css`])
|
||||||
|
.mergeStyles();
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
.external-link {
|
||||||
|
border: 2px dashed #8dba25;
|
||||||
|
border-radius: 3px;
|
||||||
|
text-align: center
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
subject: Recuperar contraseña
|
||||||
|
title: Recuperar contraseña
|
||||||
|
Click on the following link to change your password.: Pulsa en el siguiente link para cambiar tu contraseña.
|
|
@ -0,0 +1,48 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html v-bind:lang="$i18n.locale">
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta name="format-detection" content="telephone=no">
|
||||||
|
<title>{{ $t('subject') }}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table class="grid">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!-- Empty block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block empty"></div>
|
||||||
|
</div>
|
||||||
|
<!-- Header block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block">
|
||||||
|
<email-header></email-header>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block vn-pa-ml">
|
||||||
|
<p>
|
||||||
|
{{ $t('Click on the following link to change your password.') }}
|
||||||
|
<a :href="url">{{ $t('subject') }}</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Footer block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block">
|
||||||
|
<email-footer></email-footer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Empty block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block empty"></div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,17 @@
|
||||||
|
const Component = require(`vn-print/core/component`);
|
||||||
|
const emailHeader = new Component('email-header');
|
||||||
|
const emailFooter = new Component('email-footer');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'recover-password',
|
||||||
|
components: {
|
||||||
|
'email-header': emailHeader.build(),
|
||||||
|
'email-footer': emailFooter.build()
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
url: {
|
||||||
|
type: [String],
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue
He dejado esta ruta(recoverPassword) porque si se llama directamente resetPassword y el correo que se le pasa no pertenece a un usuario, devuelve un error al frontend.
Usando una ruta con try catch, hacemos que no devuelva nunca error y asi no pueden saber si ese correo es de un usuario nuestro o no.
Nomes deuria de ignorar el error de tipo "usuario no existe", tots els demes deuria de rellançarlos