]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/lib/video-blacklist.ts
Fix zh locales
[github/Chocobozzz/PeerTube.git] / server / lib / video-blacklist.ts
CommitLineData
b4055e1c 1import { Transaction } from 'sequelize'
6dd9de95 2import { CONFIG } from '../initializers/config'
1eddc9a7 3import { UserRight, VideoBlacklistType } from '../../shared/models'
7ccddd7b 4import { VideoBlacklistModel } from '../models/video/video-blacklist'
7ccddd7b 5import { logger } from '../helpers/logger'
1eddc9a7 6import { UserAdminFlag } from '../../shared/models/users/user-flag.model'
b4055e1c 7import { Hooks } from './plugins/hooks'
5b77537c 8import { Notifier } from './notifier'
453e83ea 9import { MUser, MVideoBlacklist, MVideoWithBlacklistLight } from '@server/typings/models'
7ccddd7b 10
6691c522 11async function autoBlacklistVideoIfNeeded (parameters: {
453e83ea
C
12 video: MVideoWithBlacklistLight,
13 user?: MUser,
6691c522
C
14 isRemote: boolean,
15 isNew: boolean,
5b77537c 16 notify?: boolean,
6691c522
C
17 transaction?: Transaction
18}) {
5b77537c 19 const { video, user, isRemote, isNew, notify = true, transaction } = parameters
89cd1275
C
20 const doAutoBlacklist = await Hooks.wrapPromiseFun(
21 autoBlacklistNeeded,
6691c522 22 { video, user, isRemote, isNew },
b4055e1c
C
23 'filter:video.auto-blacklist.result'
24 )
7ccddd7b 25
b4055e1c 26 if (!doAutoBlacklist) return false
7ccddd7b 27
7ccddd7b
JM
28 const videoBlacklistToCreate = {
29 videoId: video.id,
30 unfederated: true,
31 reason: 'Auto-blacklisted. Moderator review required.',
32 type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
33 }
453e83ea 34 const [ videoBlacklist ] = await VideoBlacklistModel.findOrCreate<MVideoBlacklist>({
6691c522
C
35 where: {
36 videoId: video.id
37 },
38 defaults: videoBlacklistToCreate,
39 transaction
40 })
6691c522 41 video.VideoBlacklist = videoBlacklist
1eddc9a7 42
5b77537c
C
43 if (notify) Notifier.Instance.notifyOnVideoAutoBlacklist(video)
44
7ccddd7b
JM
45 logger.info('Video %s auto-blacklisted.', video.uuid)
46
47 return true
48}
49
6691c522 50async function autoBlacklistNeeded (parameters: {
453e83ea 51 video: MVideoWithBlacklistLight,
6691c522
C
52 isRemote: boolean,
53 isNew: boolean,
453e83ea 54 user?: MUser
6691c522
C
55}) {
56 const { user, video, isRemote, isNew } = parameters
b4055e1c 57
6691c522
C
58 // Already blacklisted
59 if (video.VideoBlacklist) return false
b4055e1c 60 if (!CONFIG.AUTO_BLACKLIST.VIDEOS.OF_USERS.ENABLED || !user) return false
7c421bb1 61 if (isRemote || isNew === false) return false
b4055e1c
C
62
63 if (user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) || user.hasAdminFlag(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)) return false
64
65 return true
66}
67
7ccddd7b
JM
68// ---------------------------------------------------------------------------
69
70export {
71 autoBlacklistVideoIfNeeded
72}