blacklist.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import * as express from 'express'
  2. import { blacklistVideo, unblacklistVideo } from '@server/lib/video-blacklist'
  3. import { UserRight, VideoBlacklistCreate } from '../../../../shared'
  4. import { logger } from '../../../helpers/logger'
  5. import { getFormattedObjects } from '../../../helpers/utils'
  6. import { sequelizeTypescript } from '../../../initializers/database'
  7. import {
  8. asyncMiddleware,
  9. authenticate,
  10. blacklistSortValidator,
  11. ensureUserHasRight,
  12. paginationValidator,
  13. setBlacklistSort,
  14. setDefaultPagination,
  15. videosBlacklistAddValidator,
  16. videosBlacklistFiltersValidator,
  17. videosBlacklistRemoveValidator,
  18. videosBlacklistUpdateValidator
  19. } from '../../../middlewares'
  20. import { VideoBlacklistModel } from '../../../models/video/video-blacklist'
  21. const blacklistRouter = express.Router()
  22. blacklistRouter.post('/:videoId/blacklist',
  23. authenticate,
  24. ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
  25. asyncMiddleware(videosBlacklistAddValidator),
  26. asyncMiddleware(addVideoToBlacklistController)
  27. )
  28. blacklistRouter.get('/blacklist',
  29. authenticate,
  30. ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
  31. paginationValidator,
  32. blacklistSortValidator,
  33. setBlacklistSort,
  34. setDefaultPagination,
  35. videosBlacklistFiltersValidator,
  36. asyncMiddleware(listBlacklist)
  37. )
  38. blacklistRouter.put('/:videoId/blacklist',
  39. authenticate,
  40. ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
  41. asyncMiddleware(videosBlacklistUpdateValidator),
  42. asyncMiddleware(updateVideoBlacklistController)
  43. )
  44. blacklistRouter.delete('/:videoId/blacklist',
  45. authenticate,
  46. ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
  47. asyncMiddleware(videosBlacklistRemoveValidator),
  48. asyncMiddleware(removeVideoFromBlacklistController)
  49. )
  50. // ---------------------------------------------------------------------------
  51. export {
  52. blacklistRouter
  53. }
  54. // ---------------------------------------------------------------------------
  55. async function addVideoToBlacklistController (req: express.Request, res: express.Response) {
  56. const videoInstance = res.locals.videoAll
  57. const body: VideoBlacklistCreate = req.body
  58. await blacklistVideo(videoInstance, body)
  59. logger.info('Video %s blacklisted.', videoInstance.uuid)
  60. return res.type('json').sendStatus(204)
  61. }
  62. async function updateVideoBlacklistController (req: express.Request, res: express.Response) {
  63. const videoBlacklist = res.locals.videoBlacklist
  64. if (req.body.reason !== undefined) videoBlacklist.reason = req.body.reason
  65. await sequelizeTypescript.transaction(t => {
  66. return videoBlacklist.save({ transaction: t })
  67. })
  68. return res.type('json').sendStatus(204)
  69. }
  70. async function listBlacklist (req: express.Request, res: express.Response) {
  71. const resultList = await VideoBlacklistModel.listForApi({
  72. start: req.query.start,
  73. count: req.query.count,
  74. sort: req.query.sort,
  75. search: req.query.search,
  76. type: req.query.type
  77. })
  78. return res.json(getFormattedObjects(resultList.data, resultList.total))
  79. }
  80. async function removeVideoFromBlacklistController (req: express.Request, res: express.Response) {
  81. const videoBlacklist = res.locals.videoBlacklist
  82. const video = res.locals.videoAll
  83. await unblacklistVideo(videoBlacklist, video)
  84. logger.info('Video %s removed from blacklist.', video.uuid)
  85. return res.type('json').sendStatus(204)
  86. }