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'
8 asyncRetryTransactionMiddleware,
14 videoAbuseGetValidator,
15 videoAbuseListValidator,
16 videoAbuseReportValidator,
17 videoAbuseUpdateValidator
18 } from '../../../middlewares'
19 import { deleteAbuse, reportAbuse, updateAbuse } from '../abuse'
21 // FIXME: deprecated in 2.3. Remove this controller
23 const abuseVideoRouter = express.Router()
25 abuseVideoRouter.get('/abuse',
27 ensureUserHasRight(UserRight.MANAGE_ABUSES),
32 videoAbuseListValidator,
33 asyncMiddleware(listVideoAbuses)
35 abuseVideoRouter.put('/:videoId/abuse/:id',
37 ensureUserHasRight(UserRight.MANAGE_ABUSES),
38 asyncMiddleware(videoAbuseUpdateValidator),
39 asyncRetryTransactionMiddleware(updateVideoAbuse)
41 abuseVideoRouter.post('/:videoId/abuse',
43 asyncMiddleware(videoAbuseReportValidator),
44 asyncRetryTransactionMiddleware(reportVideoAbuse)
46 abuseVideoRouter.delete('/:videoId/abuse/:id',
48 ensureUserHasRight(UserRight.MANAGE_ABUSES),
49 asyncMiddleware(videoAbuseGetValidator),
50 asyncRetryTransactionMiddleware(deleteVideoAbuse)
53 // ---------------------------------------------------------------------------
59 // ---------------------------------------------------------------------------
61 async function listVideoAbuses (req: express.Request, res: express.Response) {
62 const user = res.locals.oauth.token.user
63 const serverActor = await getServerActor()
65 const resultList = await AbuseModel.listForAdminApi({
66 start: req.query.start,
67 count: req.query.count,
71 predefinedReason: req.query.predefinedReason,
72 search: req.query.search,
73 state: req.query.state,
74 videoIs: req.query.videoIs,
75 searchReporter: req.query.searchReporter,
76 searchReportee: req.query.searchReportee,
77 searchVideo: req.query.searchVideo,
78 searchVideoChannel: req.query.searchVideoChannel,
79 serverAccountId: serverActor.Account.id,
84 total: resultList.total,
85 data: resultList.data.map(d => d.toFormattedAdminJSON())
89 async function updateVideoAbuse (req: express.Request, res: express.Response) {
90 return updateAbuse(req, res)
93 async function deleteVideoAbuse (req: express.Request, res: express.Response) {
94 return deleteAbuse(req, res)
97 async function reportVideoAbuse (req: express.Request, res: express.Response) {
98 const oldBody = req.body as VideoAbuseCreate
101 accountId: res.locals.videoAll.VideoChannel.accountId,
103 reason: oldBody.reason,
104 predefinedReasons: oldBody.predefinedReasons,
107 id: res.locals.videoAll.id,
108 startAt: oldBody.startAt,
113 return reportAbuse(req, res)