]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/controllers/api/videos/abuse.ts
Check threads resolve on non federated videos
[github/Chocobozzz/PeerTube.git] / server / controllers / api / videos / abuse.ts
CommitLineData
4d4e5cd4 1import * as express from 'express'
d95d1559
C
2import { AbuseModel } from '@server/models/abuse/abuse'
3import { getServerActor } from '@server/models/application/application'
4import { AbuseCreate, UserRight, VideoAbuseCreate } from '../../../../shared'
65fcc311 5import {
d95d1559 6 abusesSortValidator,
90d4bb81
C
7 asyncMiddleware,
8 asyncRetryTransactionMiddleware,
9 authenticate,
10 ensureUserHasRight,
11 paginationValidator,
12 setDefaultPagination,
13 setDefaultSort,
268eebed 14 videoAbuseGetValidator,
d95d1559 15 videoAbuseListValidator,
90d4bb81 16 videoAbuseReportValidator,
d95d1559 17 videoAbuseUpdateValidator
65fcc311 18} from '../../../middlewares'
d95d1559
C
19import { deleteAbuse, reportAbuse, updateAbuse } from '../abuse'
20
21// FIXME: deprecated in 2.3. Remove this controller
65fcc311
C
22
23const abuseVideoRouter = express.Router()
24
25abuseVideoRouter.get('/abuse',
26 authenticate,
d95d1559 27 ensureUserHasRight(UserRight.MANAGE_ABUSES),
65fcc311 28 paginationValidator,
d95d1559 29 abusesSortValidator,
1174a847 30 setDefaultSort,
f05a1c30 31 setDefaultPagination,
feb34f6b 32 videoAbuseListValidator,
eb080476 33 asyncMiddleware(listVideoAbuses)
d33242b0 34)
268eebed
C
35abuseVideoRouter.put('/:videoId/abuse/:id',
36 authenticate,
d95d1559 37 ensureUserHasRight(UserRight.MANAGE_ABUSES),
268eebed
C
38 asyncMiddleware(videoAbuseUpdateValidator),
39 asyncRetryTransactionMiddleware(updateVideoAbuse)
40)
41abuseVideoRouter.post('/:videoId/abuse',
65fcc311 42 authenticate,
a2431b7d 43 asyncMiddleware(videoAbuseReportValidator),
90d4bb81 44 asyncRetryTransactionMiddleware(reportVideoAbuse)
d33242b0 45)
268eebed
C
46abuseVideoRouter.delete('/:videoId/abuse/:id',
47 authenticate,
d95d1559 48 ensureUserHasRight(UserRight.MANAGE_ABUSES),
268eebed
C
49 asyncMiddleware(videoAbuseGetValidator),
50 asyncRetryTransactionMiddleware(deleteVideoAbuse)
51)
d33242b0
C
52
53// ---------------------------------------------------------------------------
54
65fcc311
C
55export {
56 abuseVideoRouter
57}
d33242b0
C
58
59// ---------------------------------------------------------------------------
60
268eebed 61async function listVideoAbuses (req: express.Request, res: express.Response) {
f0a47bc9
C
62 const user = res.locals.oauth.token.user
63 const serverActor = await getServerActor()
64
edbc9325 65 const resultList = await AbuseModel.listForAdminApi({
f0a47bc9
C
66 start: req.query.start,
67 count: req.query.count,
68 sort: req.query.sort,
feb34f6b 69 id: req.query.id,
d95d1559 70 filter: 'video',
1ebddadd 71 predefinedReason: req.query.predefinedReason,
844db39e 72 search: req.query.search,
feb34f6b
C
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,
f0a47bc9
C
79 serverAccountId: serverActor.Account.id,
80 user
81 })
eb080476 82
edbc9325
C
83 return res.json({
84 total: resultList.total,
85 data: resultList.data.map(d => d.toFormattedAdminJSON())
86 })
d33242b0
C
87}
88
268eebed 89async function updateVideoAbuse (req: express.Request, res: express.Response) {
d95d1559 90 return updateAbuse(req, res)
268eebed
C
91}
92
93async function deleteVideoAbuse (req: express.Request, res: express.Response) {
d95d1559 94 return deleteAbuse(req, res)
268eebed
C
95}
96
eb080476 97async function reportVideoAbuse (req: express.Request, res: express.Response) {
d95d1559 98 const oldBody = req.body as VideoAbuseCreate
eb080476 99
d95d1559
C
100 req.body = {
101 accountId: res.locals.videoAll.VideoChannel.accountId,
268eebed 102
d95d1559
C
103 reason: oldBody.reason,
104 predefinedReasons: oldBody.predefinedReasons,
90d4bb81 105
d95d1559
C
106 video: {
107 id: res.locals.videoAll.id,
108 startAt: oldBody.startAt,
109 endAt: oldBody.endAt
110 }
111 } as AbuseCreate
91411dba 112
d95d1559 113 return reportAbuse(req, res)
d33242b0 114}