mirror of
https://github.com/strapi/strapi.git
synced 2025-10-14 09:34:32 +00:00
Change email node module
This commit is contained in:
parent
a512d232d3
commit
cd834d6828
@ -1,10 +0,0 @@
|
||||
{
|
||||
"smtp": {
|
||||
"from": "<no-reply@website.com>",
|
||||
"service": {
|
||||
"name": "",
|
||||
"user": "",
|
||||
"pass": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"smtp": {
|
||||
"from": "<no-reply@website.com>",
|
||||
"service": {
|
||||
"name": "",
|
||||
"user": "",
|
||||
"pass": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -23,9 +23,6 @@
|
||||
"prepublish": "npm run build",
|
||||
"postinstall": "node node_modules/strapi-helper-plugin/lib/internals/scripts/postinstall.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"nodemailer": "^4.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"cross-env": "^5.1.1",
|
||||
"eslint": "^4.11.0",
|
||||
@ -60,5 +57,8 @@
|
||||
"node": ">= 7.0.0",
|
||||
"npm": ">= 3.0.0"
|
||||
},
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"sendmail": "^1.2.0"
|
||||
}
|
||||
}
|
||||
|
@ -7,37 +7,22 @@
|
||||
*/
|
||||
|
||||
const _ = require('lodash');
|
||||
const nodemailer = require('nodemailer');
|
||||
const sendmail = require('sendmail')({
|
||||
silent: true
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
send: (options, cb) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const config = strapi.plugins['email'].config[strapi.config.environment];
|
||||
|
||||
// Format transport config.
|
||||
let transportConfig;
|
||||
if (config.smtp && config.smtp.service && config.smtp.service.name) {
|
||||
transportConfig = {
|
||||
service: config.smtp.service.name,
|
||||
auth: {
|
||||
user: config.smtp.service.user,
|
||||
pass: config.smtp.service.pass
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Init the transporter.
|
||||
const transporter = nodemailer.createTransport(transportConfig);
|
||||
|
||||
// Default values.
|
||||
options = _.isObject(options) ? options : {};
|
||||
options.from = config.smtp.from || '';
|
||||
options.from = 'admin@strapiapp.com';
|
||||
options.text = options.text || options.html;
|
||||
options.html = options.html || options.text;
|
||||
|
||||
// Send the email.
|
||||
transporter.sendMail({
|
||||
sendmail({
|
||||
from: options.from,
|
||||
to: options.to,
|
||||
subject: options.subject,
|
||||
|
@ -51,6 +51,15 @@
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/auth/forgot-password",
|
||||
"handler": "Auth.forgotPassword",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"method": "GET",
|
||||
|
@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
const _ = require('lodash');
|
||||
const crypto = require('crypto');
|
||||
|
||||
module.exports = {
|
||||
callback: async (ctx) => {
|
||||
@ -146,5 +147,50 @@ module.exports = {
|
||||
message: err.message
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
forgotPassword: async (ctx) => {
|
||||
const email = ctx.request.body.email;
|
||||
const url = ctx.request.body.url;
|
||||
|
||||
// Find the user user thanks to his email.
|
||||
const user = await strapi.query('user', 'users-permissions').findOne({ email });
|
||||
|
||||
// User not found.
|
||||
if (!user) {
|
||||
ctx.status = 400;
|
||||
return ctx.body = {
|
||||
message: 'This email does not exist.'
|
||||
};
|
||||
}
|
||||
|
||||
// Generate random token.
|
||||
const resetPasswordToken = crypto.randomBytes(64).toString('hex');
|
||||
|
||||
// Set the property code of the local passport.
|
||||
user.resetPasswordToken = resetPasswordToken;
|
||||
|
||||
// Update the user.
|
||||
await strapi.query('user', 'users-permissions').update({
|
||||
id: user.id,
|
||||
values: user
|
||||
});
|
||||
|
||||
// Send an email to the user.
|
||||
try {
|
||||
await strapi.plugins['email'].services.email.send({
|
||||
to: user.email,
|
||||
subject: 'Reset password',
|
||||
text: url + '?code=' + resetPasswordToken,
|
||||
html: url + '?code=' + resetPasswordToken
|
||||
});
|
||||
ctx.status = 200;
|
||||
ctx.body = {};
|
||||
} catch (err) {
|
||||
ctx.status = 500;
|
||||
ctx.body = {
|
||||
message: 'Error sending the email'
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user