From ded69e83732e27677fd2e268240d4dc09f0e5f73 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 8 Jun 2016 11:53:12 +0300 Subject: [PATCH] closes #4677 --- src/topics/create.js | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/topics/create.js b/src/topics/create.js index 01a8ea5f5f..a173c1d661 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -112,11 +112,9 @@ module.exports = function(Topics) { if (!canCreate) { return next(new Error('[[error:no-privileges]]')); } - - if (!guestHandleValid(data)) { - return next(new Error('[[error:guest-handle-invalid]]')); - } - + guestHandleValid(data, next); + }, + function (next) { user.isReadyToPost(data.uid, data.cid, next); }, function(next) { @@ -212,11 +210,9 @@ module.exports = function(Topics) { if (!results.canReply) { return next(new Error('[[error:no-privileges]]')); } - - if (!guestHandleValid(data)) { - return next(new Error('[[error:guest-handle-invalid]]')); - } - + guestHandleValid(data, next); + }, + function(next) { user.isReadyToPost(uid, cid, next); }, function(next) { @@ -316,12 +312,19 @@ module.exports = function(Topics) { callback(); } - function guestHandleValid(data) { - if (parseInt(meta.config.allowGuestHandles, 10) === 1 && parseInt(data.uid, 10) === 0 && - data.handle && data.handle.length > meta.config.maximumUsernameLength) { - return false; + function guestHandleValid(data, callback) { + if (parseInt(meta.config.allowGuestHandles, 10) === 1 && parseInt(data.uid, 10) === 0 && data.handle) { + if (data.handle.length > meta.config.maximumUsernameLength) { + return callback(new Error('[[error:guest-handle-invalid]]')); + } + user.existsBySlug(utils.slugify(data.handle), function(err, exists) { + if (err || exists) { + return callback(err || new Error('[[error:username-taken]]')); + } + callback(); + }); } - return true; + callback(); } };