]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/lib/video-blacklist.ts
Add last login date to users
[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'
8424c402 9import { MUser, MVideoBlacklistVideo, MVideoWithBlacklistLight } from '@server/typings/models'
7ccddd7b 10
6691c522 11async function autoBlacklistVideoIfNeeded (parameters: {
a1587156
C
12 video: MVideoWithBlacklistLight
13 user?: MUser
14 isRemote: boolean
15 isNew: boolean
16 notify?: boolean
6691c522
C
17 transaction?: Transaction
18}) {
5b77537c 19 const { video, user, isRemote, isNew, notify = true, transaction } = parameters
a1587156 20 const doAutoBlacklist = await Hooks.wrapFun(
89cd1275 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 }
8424c402 34 const [ videoBlacklist ] = await VideoBlacklistModel.findOrCreate<MVideoBlacklistVideo>({
6691c522
C
35 where: {
36 videoId: video.id
37 },
38 defaults: videoBlacklistToCreate,
39 transaction
40 })
6691c522 41 video.VideoBlacklist = videoBlacklist
1eddc9a7 42
8424c402
C
43 videoBlacklist.Video = video
44
45 if (notify) Notifier.Instance.notifyOnVideoAutoBlacklist(videoBlacklist)
5b77537c 46
7ccddd7b
JM
47 logger.info('Video %s auto-blacklisted.', video.uuid)
48
49 return true
50}
51
a1587156
C
52function autoBlacklistNeeded (parameters: {
53 video: MVideoWithBlacklistLight
54 isRemote: boolean
55 isNew: boolean
453e83ea 56 user?: MUser
6691c522
C
57}) {
58 const { user, video, isRemote, isNew } = parameters
b4055e1c 59
6691c522
C
60 // Already blacklisted
61 if (video.VideoBlacklist) return false
b4055e1c 62 if (!CONFIG.AUTO_BLACKLIST.VIDEOS.OF_USERS.ENABLED || !user) return false
7c421bb1 63 if (isRemote || isNew === false) return false
b4055e1c
C
64
65 if (user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) || user.hasAdminFlag(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)) return false
66
67 return true
68}
69
7ccddd7b
JM
70// ---------------------------------------------------------------------------
71
72export {
73 autoBlacklistVideoIfNeeded
74}