v1.18.x
Barış Soner Uşaklı 7 years ago
parent 245e1a9159
commit e1c6761087

@ -73,7 +73,7 @@
"nodebb-plugin-spam-be-gone": "0.5.3", "nodebb-plugin-spam-be-gone": "0.5.3",
"nodebb-rewards-essentials": "0.0.11", "nodebb-rewards-essentials": "0.0.11",
"nodebb-theme-lavender": "5.0.3", "nodebb-theme-lavender": "5.0.3",
"nodebb-theme-persona": "7.2.26", "nodebb-theme-persona": "7.2.27",
"nodebb-theme-slick": "1.1.4", "nodebb-theme-slick": "1.1.4",
"nodebb-theme-vanilla": "8.1.11", "nodebb-theme-vanilla": "8.1.11",
"nodebb-widget-essentials": "4.0.2", "nodebb-widget-essentials": "4.0.2",

@ -17,9 +17,17 @@ var editController = module.exports;
editController.get = function (req, res, callback) { editController.get = function (req, res, callback) {
async.waterfall([ async.waterfall([
function (next) { function (next) {
accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); async.parallel({
userData: function (next) {
accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next);
},
canUseSignature: function (next) {
privileges.global.can('signature', req.uid, next);
},
}, next);
}, },
function (userData, next) { function (results, next) {
var userData = results.userData;
if (!userData) { if (!userData) {
return callback(); return callback();
} }
@ -30,7 +38,7 @@ editController.get = function (req, res, callback) {
userData.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1; userData.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1;
userData.allowWebsite = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:website'], 10) || 0); userData.allowWebsite = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:website'], 10) || 0);
userData.allowAboutMe = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:aboutme'], 10) || 0); userData.allowAboutMe = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:aboutme'], 10) || 0);
userData.allowSignature = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:signature'], 10) || 0); userData.allowSignature = results.canUseSignature && (!userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:signature'], 10) || 0));
userData.profileImageDimension = parseInt(meta.config.profileImageDimension, 10) || 200; userData.profileImageDimension = parseInt(meta.config.profileImageDimension, 10) || 200;
userData.defaultAvatar = user.getDefaultAvatar(); userData.defaultAvatar = user.getDefaultAvatar();

@ -356,7 +356,7 @@ function createGlobalModeratorsGroup(next) {
function giveGlobalPrivileges(next) { function giveGlobalPrivileges(next) {
var privileges = require('./privileges'); var privileges = require('./privileges');
privileges.global.give(['chat', 'upload:post:image'], 'registered-users', next); privileges.global.give(['chat', 'upload:post:image', 'signature'], 'registered-users', next);
} }
function createCategories(next) { function createCategories(next) {

@ -7,12 +7,14 @@ var user = require('../user');
var groups = require('../groups'); var groups = require('../groups');
var meta = require('../meta'); var meta = require('../meta');
var plugins = require('../plugins'); var plugins = require('../plugins');
var privileges = require('../privileges');
module.exports = function (Posts) { module.exports = function (Posts) {
Posts.getUserInfoForPosts = function (uids, uid, callback) { Posts.getUserInfoForPosts = function (uids, uid, callback) {
var groupsMap = {}; var groupsMap = {};
var userData; var userData;
var userSettings; var userSettings;
var canUseSignature;
async.waterfall([ async.waterfall([
function (next) { function (next) {
async.parallel({ async.parallel({
@ -22,11 +24,15 @@ module.exports = function (Posts) {
userSettings: function (next) { userSettings: function (next) {
user.getMultipleUserSettings(uids, next); user.getMultipleUserSettings(uids, next);
}, },
canUseSignature: function (next) {
privileges.global.can('signature', uid, next);
},
}, next); }, next);
}, },
function (results, next) { function (results, next) {
userData = results.userData; userData = results.userData;
userSettings = results.userSettings; userSettings = results.userSettings;
canUseSignature = results.canUseSignature;
var groupTitles = userData.map(function (userData) { var groupTitles = userData.map(function (userData) {
return userData && userData.groupTitle; return userData && userData.groupTitle;
}).filter(function (groupTitle, index, array) { }).filter(function (groupTitle, index, array) {
@ -74,7 +80,7 @@ module.exports = function (Posts) {
groups.isMember(userData.uid, userData.groupTitle, next); groups.isMember(userData.uid, userData.groupTitle, next);
}, },
signature: function (next) { signature: function (next) {
if (!userData.signature || parseInt(meta.config.disableSignatures, 10) === 1) { if (!userData.signature || !canUseSignature || parseInt(meta.config.disableSignatures, 10) === 1) {
userData.signature = ''; userData.signature = '';
return next(); return next();
} }

@ -16,12 +16,14 @@ module.exports = function (privileges) {
{ name: 'Chat' }, { name: 'Chat' },
{ name: 'Upload Images' }, { name: 'Upload Images' },
{ name: 'Upload Files' }, { name: 'Upload Files' },
{ name: 'Signature' },
]; ];
privileges.global.userPrivilegeList = [ privileges.global.userPrivilegeList = [
'chat', 'chat',
'upload:post:image', 'upload:post:image',
'upload:post:file', 'upload:post:file',
'signature',
]; ];
privileges.global.groupPrivilegeList = privileges.global.userPrivilegeList.map(function (privilege) { privileges.global.groupPrivilegeList = privileges.global.userPrivilegeList.map(function (privilege) {

@ -0,0 +1,11 @@
'use strict';
var privileges = require('../../privileges');
module.exports = {
name: 'Give registered users signature privilege',
timestamp: Date.UTC(2018, 1, 28),
method: function (callback) {
privileges.global.give(['signature'], 'registered-users', callback);
},
};

@ -668,6 +668,7 @@ describe('Categories', function () {
chat: false, chat: false,
'upload:post:image': false, 'upload:post:image': false,
'upload:post:file': false, 'upload:post:file': false,
signature: false,
}); });
done(); done();
@ -704,6 +705,7 @@ describe('Categories', function () {
'groups:chat': true, 'groups:chat': true,
'groups:upload:post:image': true, 'groups:upload:post:image': true,
'groups:upload:post:file': false, 'groups:upload:post:file': false,
'groups:signature': true,
}); });
done(); done();

@ -202,7 +202,7 @@ function setupDefaultConfigs(meta, next) {
function giveDefaultGlobalPrivileges(next) { function giveDefaultGlobalPrivileges(next) {
var privileges = require('../../src/privileges'); var privileges = require('../../src/privileges');
privileges.global.give(['chat', 'upload:post:image'], 'registered-users', next); privileges.global.give(['chat', 'upload:post:image', 'signature'], 'registered-users', next);
} }
function enableDefaultPlugins(callback) { function enableDefaultPlugins(callback) {

Loading…
Cancel
Save