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