fix: closes #13526, dont send multiple emails when user is invited

This commit is contained in:
Barış Soner Uşaklı
2025-07-02 17:38:35 -04:00
parent ceae2aa1a8
commit 5a5ca8a5fb
2 changed files with 13 additions and 5 deletions

View File

@@ -109,12 +109,14 @@ module.exports = function (User) {
}
if (data.email && userData.uid > 1) {
if (!data.token || !await User.isInviteTokenValid(data.token, data.email)) {
await User.email.sendValidationEmail(userData.uid, {
email: data.email,
template: 'welcome',
subject: `[[email:welcome-to, ${meta.config.title || meta.config.browserTitle || 'NodeBB'}]]`,
}).catch(err => winston.error(`[user.create] Validation email failed to send\n[emailer.send] ${err.stack}`));
}
}
if (userNameChanged) {
await User.notifications.sendNameChangeNotification(userData.uid, userData.username);
}

View File

@@ -72,6 +72,12 @@ module.exports = function (User) {
}
};
User.isInviteTokenValid = async function (token, enteredEmail) {
if (!token) return false;
const email = await db.getObjectField(`invitation:token:${token}`, 'email');
return email && email === enteredEmail;
};
User.confirmIfInviteEmailIsUsed = async function (token, enteredEmail, uid) {
if (!enteredEmail) {
return;