1 import * as express from 'express'
2 import { AbuseModel } from '@server/models/abuse/abuse'
3 import { getServerActor } from '@server/models/application/application'
4 import { AbuseCreate, UserRight, VideoAbuseCreate } from '../../../../shared'
5 import { getFormattedObjects } from '../../../helpers/utils'
9 asyncRetryTransactionMiddleware,
15 videoAbuseGetValidator,
16 videoAbuseListValidator,
17 videoAbuseReportValidator,
18 videoAbuseUpdateValidator
19 } from '../../../middlewares'
20 import { deleteAbuse, reportAbuse, updateAbuse } from '../abuse'
22 // FIXME: deprecated in 2.3. Remove this controller
24 const abuseVideoRouter = express.Router()
26 abuseVideoRouter.get('/abuse',
28 ensureUserHasRight(UserRight.MANAGE_ABUSES),
33 videoAbuseListValidator,
34 asyncMiddleware(listVideoAbuses)
36 abuseVideoRouter.put('/:videoId/abuse/:id',
38 ensureUserHasRight(UserRight.MANAGE_ABUSES),
39 asyncMiddleware(videoAbuseUpdateValidator),
40 asyncRetryTransactionMiddleware(updateVideoAbuse)
42 abuseVideoRouter.post('/:videoId/abuse',
44 asyncMiddleware(videoAbuseReportValidator),
45 asyncRetryTransactionMiddleware(reportVideoAbuse)
47 abuseVideoRouter.delete('/:videoId/abuse/:id',
49 ensureUserHasRight(UserRight.MANAGE_ABUSES),
50 asyncMiddleware(videoAbuseGetValidator),
51 asyncRetryTransactionMiddleware(deleteVideoAbuse)
54 // ---------------------------------------------------------------------------
60 // ---------------------------------------------------------------------------
62 async function listVideoAbuses (req: express.Request, res: express.Response) {
63 const user = res.locals.oauth.token.user
64 const serverActor = await getServerActor()
66 const resultList = await AbuseModel.listForApi({
67 start: req.query.start,
68 count: req.query.count,
72 predefinedReason: req.query.predefinedReason,
73 search: req.query.search,
74 state: req.query.state,
75 videoIs: req.query.videoIs,
76 searchReporter: req.query.searchReporter,
77 searchReportee: req.query.searchReportee,
78 searchVideo: req.query.searchVideo,
79 searchVideoChannel: req.query.searchVideoChannel,
80 serverAccountId: serverActor.Account.id,
84 return res.json(getFormattedObjects(resultList.data, resultList.total))
87 async function updateVideoAbuse (req: express.Request, res: express.Response) {
88 return updateAbuse(req, res)
91 async function deleteVideoAbuse (req: express.Request, res: express.Response) {
92 return deleteAbuse(req, res)
95 async function reportVideoAbuse (req: express.Request, res: express.Response) {
96 const oldBody = req.body as VideoAbuseCreate
99 accountId: res.locals.videoAll.VideoChannel.accountId,
101 reason: oldBody.reason,
102 predefinedReasons: oldBody.predefinedReasons,
105 id: res.locals.videoAll.id,
106 startAt: oldBody.startAt,
111 return reportAbuse(req, res)