diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js index 53ecea8534..af5963002e 100644 --- a/src/controllers/accounts/helpers.js +++ b/src/controllers/accounts/helpers.js @@ -119,13 +119,6 @@ helpers.getUserDataByUserSlug = async function (userslug, callerUID, query = {}) userData.signature = escape(userData.signature); userData.birthday = validator.escape(String(userData.birthday || '')); userData.moderationNote = validator.escape(String(userData.moderationNote || '')); - - if (userData['cover:url']) { - userData['cover:url'] = userData['cover:url'].startsWith('http') ? userData['cover:url'] : (nconf.get('relative_path') + userData['cover:url']); - } else { - userData['cover:url'] = require('../../coverPhoto').getDefaultProfileCover(userData.uid); - } - userData['cover:position'] = validator.escape(String(userData['cover:position'] || '50% 50%')); userData['username:disableEdit'] = !userData.isAdmin && meta.config['username:disableEdit']; userData['email:disableEdit'] = !userData.isAdmin && meta.config['email:disableEdit']; diff --git a/src/groups/data.js b/src/groups/data.js index 1dc52e44ad..72eaaeda7d 100644 --- a/src/groups/data.js +++ b/src/groups/data.js @@ -7,6 +7,11 @@ const db = require('../database'); const plugins = require('../plugins'); const utils = require('../utils'); const translator = require('../translator'); +const coverPhoto = require('../coverPhoto'); + +const relative_path = nconf.get('relative_path'); + +const prependRelativePath = url => url.startsWith('http') ? url : relative_path + url; const intFields = [ 'createtime', 'memberCount', 'hidden', 'system', 'private', @@ -81,17 +86,13 @@ function modifyGroup(group, fields) { group['cover:thumb:url'] = group['cover:thumb:url'] || group['cover:url']; - if (group['cover:url']) { - group['cover:url'] = group['cover:url'].startsWith('http') ? group['cover:url'] : (nconf.get('relative_path') + group['cover:url']); - } else { - group['cover:url'] = require('../coverPhoto').getDefaultGroupCover(group.name); - } + group['cover:url'] = group['cover:url'] ? + prependRelativePath(group['cover:url']) : + coverPhoto.getDefaultGroupCover(group.name); - if (group['cover:thumb:url']) { - group['cover:thumb:url'] = group['cover:thumb:url'].startsWith('http') ? group['cover:thumb:url'] : (nconf.get('relative_path') + group['cover:thumb:url']); - } else { - group['cover:thumb:url'] = require('../coverPhoto').getDefaultGroupCover(group.name); - } + group['cover:thumb:url'] = group['cover:thumb:url'] ? + prependRelativePath(group['cover:thumb:url']) : + coverPhoto.getDefaultGroupCover(group.name); group['cover:position'] = validator.escape(String(group['cover:position'] || '50% 50%')); } diff --git a/src/user/data.js b/src/user/data.js index 0620e159a2..e76e9975af 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -9,9 +9,12 @@ const meta = require('../meta'); const plugins = require('../plugins'); const activitypub = require('../activitypub'); const utils = require('../utils'); +const coverPhoto = require('../coverPhoto'); const relative_path = nconf.get('relative_path'); +const prependRelativePath = url => url.startsWith('http') ? url : relative_path + url; + const intFields = [ 'uid', 'postcount', 'topiccount', 'reputation', 'profileviews', 'banned', 'banned:expire', 'email:confirmed', 'joindate', 'lastonline', @@ -257,12 +260,18 @@ module.exports = function (User) { parseGroupTitle(user); } - if (user.picture && user.picture === user.uploadedpicture) { - user.uploadedpicture = user.picture.startsWith('http') ? user.picture : relative_path + user.picture; - user.picture = user.uploadedpicture; - } else if (user.uploadedpicture) { - user.uploadedpicture = user.uploadedpicture.startsWith('http') ? user.uploadedpicture : relative_path + user.uploadedpicture; + if (user.uploadedpicture || user.picture) { + const source = (user.picture && user.picture === user.uploadedpicture) ? user.picture : user.uploadedpicture; + if (source) { + user.uploadedpicture = prependRelativePath(source); + user.picture = user.uploadedpicture; + } } + + user['cover:url'] = user['cover:url'] ? + prependRelativePath(user['cover:url']) : + coverPhoto.getDefaultProfileCover(user.uid); + if (meta.config.defaultAvatar && !user.picture) { user.picture = User.getDefaultAvatar(); } diff --git a/test/user.js b/test/user.js index 0fc1b4ef20..2d7d85f23b 100644 --- a/test/user.js +++ b/test/user.js @@ -176,7 +176,7 @@ describe('User', () => { await assert.rejects(User.create({ username: '-.-', // slug becomes . password: '123456', - }), { message: '[[error:invalid-username, -.-]]' }); + }), { message: '[[error:invalid-username]]' }); }); it('should create user with valid slug (-.-.- => .-.)', async () => {