mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: add feature flag to disable verification emails, closes #9996
This commit is contained in:
@@ -138,6 +138,7 @@
|
|||||||
"disableEmailSubscriptions": 0,
|
"disableEmailSubscriptions": 0,
|
||||||
"emailConfirmInterval": 10,
|
"emailConfirmInterval": 10,
|
||||||
"removeEmailNotificationImages": 0,
|
"removeEmailNotificationImages": 0,
|
||||||
|
"sendValidationEmail": 1,
|
||||||
"includeUnverifiedEmails": 0,
|
"includeUnverifiedEmails": 0,
|
||||||
"emailPrompt": 1,
|
"emailPrompt": 1,
|
||||||
"inviteExpiration": 7,
|
"inviteExpiration": 7,
|
||||||
|
|||||||
@@ -38,7 +38,8 @@
|
|||||||
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
|
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>",
|
||||||
"notifications.remove-images": "Remove images from email notifications",
|
"notifications.remove-images": "Remove images from email notifications",
|
||||||
"require-email-address": "Require new users to specify an email address",
|
"require-email-address": "Require new users to specify an email address",
|
||||||
"require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
"require-email-address-warning": "By default, users can opt-out of entering an email address by leaving the field blank. Enabling this option means they have to enter an email address in order to proceed with registration. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>",
|
||||||
|
"send-validation-email": "Send validation emails when an email is added or changed",
|
||||||
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
|
"include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails",
|
||||||
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
|
"include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.",
|
||||||
"prompt": "Prompt users to enter or confirm their emails",
|
"prompt": "Prompt users to enter or confirm their emails",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const nconf = require('nconf');
|
const nconf = require('nconf');
|
||||||
|
const winston = require('winston');
|
||||||
|
|
||||||
const user = require('./index');
|
const user = require('./index');
|
||||||
const utils = require('../utils');
|
const utils = require('../utils');
|
||||||
@@ -69,6 +70,11 @@ UserEmail.sendValidationEmail = async function (uid, options) {
|
|||||||
* - force, sends email even if it is too soon to send another
|
* - force, sends email even if it is too soon to send another
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (meta.config.sendValidationEmail !== 1) {
|
||||||
|
winston.verbose(`[user/email] Validation email for uid ${uid} not sent due to config settings`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
|
||||||
// Fallback behaviour (email passed in as second argument)
|
// Fallback behaviour (email passed in as second argument)
|
||||||
@@ -110,6 +116,7 @@ UserEmail.sendValidationEmail = async function (uid, options) {
|
|||||||
await db.expireAt(`confirm:${confirm_code}`, Math.floor((Date.now() / 1000) + (60 * 60 * 24)));
|
await db.expireAt(`confirm:${confirm_code}`, Math.floor((Date.now() / 1000) + (60 * 60 * 24)));
|
||||||
const username = await user.getUserField(uid, 'username');
|
const username = await user.getUserField(uid, 'username');
|
||||||
|
|
||||||
|
winston.verbose(`[user/email] Validation email for uid ${uid} sent to ${options.email}`);
|
||||||
events.log({
|
events.log({
|
||||||
type: 'email-confirmation-sent',
|
type: 'email-confirmation-sent',
|
||||||
uid,
|
uid,
|
||||||
|
|||||||
@@ -20,13 +20,6 @@
|
|||||||
<input type="text" class="form-control input-lg" id="email:from_name" data-field="email:from_name" placeholder="NodeBB" /><br />
|
<input type="text" class="form-control input-lg" id="email:from_name" data-field="email:from_name" placeholder="NodeBB" /><br />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="checkbox">
|
|
||||||
<label for="removeEmailNotificationImages" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
|
||||||
<input class="mdl-switch__input" type="checkbox" id="removeEmailNotificationImages" data-field="removeEmailNotificationImages" name="removeEmailNotificationImages" />
|
|
||||||
<span class="mdl-switch__label">[[admin/settings/email:notifications.remove-images]]</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label for="requireEmailAddress" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
<label for="requireEmailAddress" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
<input class="mdl-switch__input" type="checkbox" id="requireEmailAddress" data-field="requireEmailAddress" name="requireEmailAddress" />
|
<input class="mdl-switch__input" type="checkbox" id="requireEmailAddress" data-field="requireEmailAddress" name="requireEmailAddress" />
|
||||||
@@ -35,6 +28,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<p class="help-block">[[admin/settings/email:require-email-address-warning]]</p>
|
<p class="help-block">[[admin/settings/email:require-email-address-warning]]</p>
|
||||||
|
|
||||||
|
<div class="checkbox">
|
||||||
|
<label for="sendValidationEmail" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
|
<input class="mdl-switch__input" type="checkbox" id="sendValidationEmail" data-field="sendValidationEmail" name="sendValidationEmail" />
|
||||||
|
<span class="mdl-switch__label">[[admin/settings/email:send-validation-email]]</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label for="includeUnverifiedEmails" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
<label for="includeUnverifiedEmails" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
<input class="mdl-switch__input" type="checkbox" id="includeUnverifiedEmails" data-field="includeUnverifiedEmails" name="includeUnverifiedEmails" />
|
<input class="mdl-switch__input" type="checkbox" id="includeUnverifiedEmails" data-field="includeUnverifiedEmails" name="includeUnverifiedEmails" />
|
||||||
@@ -50,6 +50,13 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<p class="help-block">[[admin/settings/email:prompt-help]]</p>
|
<p class="help-block">[[admin/settings/email:prompt-help]]</p>
|
||||||
|
|
||||||
|
<div class="checkbox">
|
||||||
|
<label for="removeEmailNotificationImages" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
|
<input class="mdl-switch__input" type="checkbox" id="removeEmailNotificationImages" data-field="removeEmailNotificationImages" name="removeEmailNotificationImages" />
|
||||||
|
<span class="mdl-switch__label">[[admin/settings/email:notifications.remove-images]]</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user