From 927537c759a571fd84fce52add9f3483edb36763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 9 Apr 2018 20:22:36 -0400 Subject: [PATCH] #6431 add private upload info --- public/language/en-GB/uploads.json | 4 +++- public/src/client/account/uploads.js | 2 +- src/controllers/accounts/uploads.js | 2 ++ src/socket.io/user.js | 6 +++--- src/user/uploads.js | 9 ++++++--- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/public/language/en-GB/uploads.json b/public/language/en-GB/uploads.json index bf916b8a42..e58955543a 100644 --- a/public/language/en-GB/uploads.json +++ b/public/language/en-GB/uploads.json @@ -3,5 +3,7 @@ "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", "maximum-file-size": "Maximum %1 kb", - "no-uploads-found": "No uploads found" + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/src/client/account/uploads.js b/public/src/client/account/uploads.js index cc8bdd43f2..96754db74c 100644 --- a/public/src/client/account/uploads.js +++ b/public/src/client/account/uploads.js @@ -10,7 +10,7 @@ define('forum/account/uploads', ['forum/account/header'], function (header) { var el = $(this).parents('[data-url]'); var url = el.attr('data-url'); - socket.emit('user.deleteUpload', url, function (err) { + socket.emit('user.deleteUpload', { url: url, uid: ajaxify.data.uid }, function (err) { if (err) { return app.alertError(err.message); } diff --git a/src/controllers/accounts/uploads.js b/src/controllers/accounts/uploads.js index ee0825c623..6f0ff29fff 100644 --- a/src/controllers/accounts/uploads.js +++ b/src/controllers/accounts/uploads.js @@ -5,6 +5,7 @@ var async = require('async'); var db = require('../../database'); var helpers = require('../helpers'); +var meta = require('../../meta'); var pagination = require('../../pagination'); var accountHelpers = require('./helpers'); @@ -45,6 +46,7 @@ uploadsController.get = function (req, res, callback) { }); var pageCount = Math.ceil(results.itemCount / itemsPerPage); userData.pagination = pagination.create(page, pageCount, req.query); + userData.privateUploads = parseInt(meta.config.privateUploads, 10) === 1; userData.title = '[[pages:account/uploads, ' + userData.username + ']]'; userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[global:uploads]]' }]); res.render('account/uploads', userData); diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 4f2acde057..25df8f7931 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -341,11 +341,11 @@ SocketUser.setModerationNote = function (socket, data, callback) { ], callback); }; -SocketUser.deleteUpload = function (socket, url, callback) { - if (!url) { +SocketUser.deleteUpload = function (socket, data, callback) { + if (!data || !data.url || !data.uid) { return callback(new Error('[[error:invalid-data]]')); } - user.deleteUpload(socket.uid, url, callback); + user.deleteUpload(socket.uid, data.uid, data.url, callback); }; SocketUser.gdpr = {}; diff --git a/src/user/uploads.js b/src/user/uploads.js index 60a84d8fe8..f5e840a9f2 100644 --- a/src/user/uploads.js +++ b/src/user/uploads.js @@ -6,15 +6,15 @@ var db = require('../database'); var file = require('../file'); module.exports = function (User) { - User.deleteUpload = function (uid, url, callback) { + User.deleteUpload = function (callerUid, uid, url, callback) { async.waterfall([ function (next) { async.parallel({ isUsersUpload: function (next) { - db.isSortedSetMember('uid:' + uid + ':uploads', url, next); + db.isSortedSetMember('uid:' + callerUid + ':uploads', url, next); }, isAdminOrGlobalMod: function (next) { - User.isAdminOrGlobalMod(uid, next); + User.isAdminOrGlobalMod(callerUid, next); }, }, next); }, @@ -25,6 +25,9 @@ module.exports = function (User) { file.delete(file.uploadUrlToPath(url), next); }, + function (next) { + db.sortedSetRemove('uid:' + uid + ':uploads', url, next); + }, ], callback); }; };