mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: allow disabling of GDPR features via ACP toggle, closes #6847
This commit is contained in:
@@ -55,6 +55,7 @@
|
|||||||
"profile:convertProfileImageToPNG": 0,
|
"profile:convertProfileImageToPNG": 0,
|
||||||
"profile:keepAllUserImages": 0,
|
"profile:keepAllUserImages": 0,
|
||||||
"requireEmailConfirmation": 0,
|
"requireEmailConfirmation": 0,
|
||||||
|
"gdpr_enabled": 1,
|
||||||
"allowProfileImageUploads": 1,
|
"allowProfileImageUploads": 1,
|
||||||
"teaserPost": "last-reply",
|
"teaserPost": "last-reply",
|
||||||
"allowPrivateGroups": 1,
|
"allowPrivateGroups": 1,
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
"allow-login-with.username": "Username Only",
|
"allow-login-with.username": "Username Only",
|
||||||
"allow-login-with.email": "Email Only",
|
"allow-login-with.email": "Email Only",
|
||||||
"account-settings": "Account Settings",
|
"account-settings": "Account Settings",
|
||||||
|
"gdpr_enabled": "Enable GDPR consent collection",
|
||||||
|
"gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://eugdpr.org/the-regulation/gdpr-faqs/\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
|
||||||
"disable-username-changes": "Disable username changes",
|
"disable-username-changes": "Disable username changes",
|
||||||
"disable-email-changes": "Disable email changes",
|
"disable-email-changes": "Disable email changes",
|
||||||
"disable-password-changes": "Disable password changes",
|
"disable-password-changes": "Disable password changes",
|
||||||
|
|||||||
@@ -10,6 +10,11 @@ var accountHelpers = require('./helpers');
|
|||||||
var consentController = module.exports;
|
var consentController = module.exports;
|
||||||
|
|
||||||
consentController.get = function (req, res, next) {
|
consentController.get = function (req, res, next) {
|
||||||
|
if (!meta.config.gdpr_enabled) {
|
||||||
|
// GDPR disabled
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
var userData;
|
var userData;
|
||||||
|
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
|
|||||||
@@ -51,10 +51,7 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) {
|
|||||||
user.getIPs(uid, 4, next);
|
user.getIPs(uid, 4, next);
|
||||||
},
|
},
|
||||||
profile_menu: function (next) {
|
profile_menu: function (next) {
|
||||||
plugins.fireHook('filter:user.profileMenu', {
|
const links = [{
|
||||||
uid: uid,
|
|
||||||
callerUID: callerUID,
|
|
||||||
links: [{
|
|
||||||
id: 'info',
|
id: 'info',
|
||||||
route: 'info',
|
route: 'info',
|
||||||
name: '[[user:account_info]]',
|
name: '[[user:account_info]]',
|
||||||
@@ -76,7 +73,10 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) {
|
|||||||
globalMod: false,
|
globalMod: false,
|
||||||
admin: false,
|
admin: false,
|
||||||
},
|
},
|
||||||
}, {
|
}];
|
||||||
|
|
||||||
|
if (meta.config.gdpr_enabled) {
|
||||||
|
links.push({
|
||||||
id: 'consent',
|
id: 'consent',
|
||||||
route: 'consent',
|
route: 'consent',
|
||||||
name: '[[user:consent.title]]',
|
name: '[[user:consent.title]]',
|
||||||
@@ -87,7 +87,13 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) {
|
|||||||
globalMod: false,
|
globalMod: false,
|
||||||
admin: false,
|
admin: false,
|
||||||
},
|
},
|
||||||
}],
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins.fireHook('filter:user.profileMenu', {
|
||||||
|
uid: uid,
|
||||||
|
callerUID: callerUID,
|
||||||
|
links: links,
|
||||||
}, next);
|
}, next);
|
||||||
},
|
},
|
||||||
groups: function (next) {
|
groups: function (next) {
|
||||||
|
|||||||
@@ -345,6 +345,10 @@ User.addInterstitials = function (callback) {
|
|||||||
method: [
|
method: [
|
||||||
// GDPR information collection/processing consent + email consent
|
// GDPR information collection/processing consent + email consent
|
||||||
function (data, callback) {
|
function (data, callback) {
|
||||||
|
if (!meta.config.gdpr_enabled) {
|
||||||
|
return setImmediate(callback, null, data);
|
||||||
|
}
|
||||||
|
|
||||||
const add = function () {
|
const add = function () {
|
||||||
data.interstitials.push({
|
data.interstitials.push({
|
||||||
template: 'partials/gdpr_consent',
|
template: 'partials/gdpr_consent',
|
||||||
|
|||||||
@@ -34,6 +34,13 @@
|
|||||||
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:account-settings]]</div>
|
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:account-settings]]</div>
|
||||||
<div class="col-sm-10 col-xs-12">
|
<div class="col-sm-10 col-xs-12">
|
||||||
<form>
|
<form>
|
||||||
|
<div class="checkbox">
|
||||||
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
|
<input class="mdl-switch__input" type="checkbox" data-field="gdpr_enabled">
|
||||||
|
<span class="mdl-switch__label"><strong>[[admin/settings/user:gdpr_enabled]]</strong></span>
|
||||||
|
</label>
|
||||||
|
<p class="help-block">[[admin/settings/user:gdpr_enabled_help]]</p>
|
||||||
|
</div>
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||||
<input class="mdl-switch__input" type="checkbox" data-field="username:disableEdit">
|
<input class="mdl-switch__input" type="checkbox" data-field="username:disableEdit">
|
||||||
|
|||||||
Reference in New Issue
Block a user