X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Fabuse.ts;h=4ae899b7e7e91f5e64ed18ab169e60fb28bc5334;hb=8319d6ae72d4da6de51bd3d4b5c68040fc8dc3b4;hp=32f9c47937d10b11ba9709824c51172e52b245f4;hpb=88108880bbdba473cfe36ecbebc1c3c4f972e102;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/abuse.ts b/server/controllers/api/videos/abuse.ts index 32f9c4793..4ae899b7e 100644 --- a/server/controllers/api/videos/abuse.ts +++ b/server/controllers/api/videos/abuse.ts @@ -1,7 +1,7 @@ import * as express from 'express' import { UserRight, VideoAbuseCreate, VideoAbuseState } from '../../../../shared' import { logger } from '../../../helpers/logger' -import { getFormattedObjects } from '../../../helpers/utils' +import { getFormattedObjects, getServerActor } from '../../../helpers/utils' import { sequelizeTypescript } from '../../../initializers' import { asyncMiddleware, @@ -17,12 +17,11 @@ import { videoAbuseUpdateValidator } from '../../../middlewares' import { AccountModel } from '../../../models/account/account' -import { VideoModel } from '../../../models/video/video' import { VideoAbuseModel } from '../../../models/video/video-abuse' import { auditLoggerFactory, VideoAbuseAuditView } from '../../../helpers/audit-logger' -import { UserModel } from '../../../models/account/user' import { Notifier } from '../../../lib/notifier' import { sendVideoAbuse } from '../../../lib/activitypub/send/send-flag' +import { MVideoAbuseAccountVideo } from '../../../typings/models/video' const auditLogger = auditLoggerFactory('abuse') const abuseVideoRouter = express.Router() @@ -63,13 +62,22 @@ export { // --------------------------------------------------------------------------- async function listVideoAbuses (req: express.Request, res: express.Response) { - const resultList = await VideoAbuseModel.listForApi(req.query.start, req.query.count, req.query.sort) + const user = res.locals.oauth.token.user + const serverActor = await getServerActor() + + const resultList = await VideoAbuseModel.listForApi({ + start: req.query.start, + count: req.query.count, + sort: req.query.sort, + serverAccountId: serverActor.Account.id, + user + }) return res.json(getFormattedObjects(resultList.data, resultList.total)) } async function updateVideoAbuse (req: express.Request, res: express.Response) { - const videoAbuse: VideoAbuseModel = res.locals.videoAbuse + const videoAbuse = res.locals.videoAbuse if (req.body.moderationComment !== undefined) videoAbuse.moderationComment = req.body.moderationComment if (req.body.state !== undefined) videoAbuse.state = req.body.state @@ -84,7 +92,7 @@ async function updateVideoAbuse (req: express.Request, res: express.Response) { } async function deleteVideoAbuse (req: express.Request, res: express.Response) { - const videoAbuse: VideoAbuseModel = res.locals.videoAbuse + const videoAbuse = res.locals.videoAbuse await sequelizeTypescript.transaction(t => { return videoAbuse.destroy({ transaction: t }) @@ -96,11 +104,11 @@ async function deleteVideoAbuse (req: express.Request, res: express.Response) { } async function reportVideoAbuse (req: express.Request, res: express.Response) { - const videoInstance = res.locals.video as VideoModel + const videoInstance = res.locals.videoAll const body: VideoAbuseCreate = req.body - const videoAbuse: VideoAbuseModel = await sequelizeTypescript.transaction(async t => { - const reporterAccount = await AccountModel.load((res.locals.oauth.token.User as UserModel).Account.id, t) + const videoAbuse = await sequelizeTypescript.transaction(async t => { + const reporterAccount = await AccountModel.load(res.locals.oauth.token.User.Account.id, t) const abuseToCreate = { reporterAccountId: reporterAccount.id, @@ -109,22 +117,22 @@ async function reportVideoAbuse (req: express.Request, res: express.Response) { state: VideoAbuseState.PENDING } - const videoAbuseInstance = await VideoAbuseModel.create(abuseToCreate, { transaction: t }) + const videoAbuseInstance: MVideoAbuseAccountVideo = await VideoAbuseModel.create(abuseToCreate, { transaction: t }) videoAbuseInstance.Video = videoInstance videoAbuseInstance.Account = reporterAccount // We send the video abuse to the origin server if (videoInstance.isOwned() === false) { - await sendVideoAbuse(reporterAccount.Actor, videoAbuseInstance, videoInstance) + await sendVideoAbuse(reporterAccount.Actor, videoAbuseInstance, videoInstance, t) } - Notifier.Instance.notifyOnNewVideoAbuse(videoAbuseInstance) - auditLogger.create(reporterAccount.Actor.getIdentifier(), new VideoAbuseAuditView(videoAbuseInstance.toFormattedJSON())) return videoAbuseInstance }) + Notifier.Instance.notifyOnNewVideoAbuse(videoAbuse) + logger.info('Abuse report for video %s created.', videoInstance.name) return res.json({ videoAbuse: videoAbuse.toFormattedJSON() }).end()