mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-06 03:50:26 +02:00
Add ability for an administrator to remove any video (#61)
* Add ability for an admin to remove every video on the pod. * Server: add BlacklistedVideos relation. * Server: Insert in BlacklistedVideos relation upon deletion of a video. * Server: Modify BlacklistedVideos schema to add Pod id information. * Server: Moving insertion of a blacklisted video from the `afterDestroy` hook into the process of deletion of a video. To avoid inserting a video when it is removed on its origin pod. When a video is removed on its origin pod, the `afterDestroy` hook is fire, but no request is made on the delete('/:videoId') interface. Hence, we insert into `BlacklistedVideos` only on request on delete('/:videoId') (if requirements for insertion are met). * Server: Add removeVideoFromBlacklist hook on deletion of a video. We are going to proceed in another way :). We will add a new route : /:videoId/blacklist to blacklist a video. We do not blacklist a video upon its deletion now (to distinguish a video blacklist from a regular video delete) When we blacklist a video, the video remains in the DB, so we don't have any concern about its update. It just doesn't appear in the video list. When we remove a video, we then have to remove it from the blacklist too. We could also remove a video from the blacklist to 'unremove' it and make it appear again in the video list (will be another feature). * Server: Add handler for new route post(/:videoId/blacklist) * Client: Add isBlacklistable method * Client: Update isRemovableBy method. * Client: Move 'Delete video' feature from the video-list to the video-watch module. * Server: Exclude blacklisted videos from the video list * Server: Use findAll() in BlacklistedVideos.list() method * Server: Fix addVideoToBlacklist function. * Client: Add blacklist feature. * Server: Use JavaScript Standard Style. * Server: In checkUserCanDeleteVideo, move the callback call inside the db callback function * Server: Modify BlacklistVideo relation * Server: Modifiy Videos methods. * Server: Add checkVideoIsBlacklistable method * Server: Rewrite addVideoToBlacklist method * Server: Fix checkVideoIsBlacklistable method * Server: Add return to addVideoToBlacklist method
This commit is contained in:
parent
00871a2617
commit
198b205c10
13 changed files with 283 additions and 66 deletions
|
@ -93,11 +93,13 @@ router.get('/:id',
|
|||
validatorsVideos.videosGet,
|
||||
getVideo
|
||||
)
|
||||
|
||||
router.delete('/:id',
|
||||
oAuth.authenticate,
|
||||
validatorsVideos.videosRemove,
|
||||
removeVideo
|
||||
)
|
||||
|
||||
router.get('/search/:value',
|
||||
validatorsVideos.videosSearch,
|
||||
validatorsPagination.pagination,
|
||||
|
@ -108,6 +110,13 @@ router.get('/search/:value',
|
|||
searchVideos
|
||||
)
|
||||
|
||||
router.post('/:id/blacklist',
|
||||
oAuth.authenticate,
|
||||
admin.ensureIsAdmin,
|
||||
validatorsVideos.videosBlacklist,
|
||||
addVideoToBlacklist
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
module.exports = router
|
||||
|
@ -622,3 +631,19 @@ function reportVideoAbuse (req, res, finalCallback) {
|
|||
return finalCallback(null)
|
||||
})
|
||||
}
|
||||
|
||||
function addVideoToBlacklist (req, res, next) {
|
||||
const videoInstance = res.locals.video
|
||||
|
||||
db.BlacklistedVideo.create({
|
||||
videoId: videoInstance.id
|
||||
})
|
||||
.asCallback(function (err) {
|
||||
if (err) {
|
||||
logger.error('Errors when blacklisting video ', { error: err })
|
||||
return next(err)
|
||||
}
|
||||
|
||||
return res.type('json').status(204).end()
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue