]>
Commit | Line | Data |
---|---|---|
b4055e1c | 1 | import { Transaction } from 'sequelize' |
6dd9de95 | 2 | import { CONFIG } from '../initializers/config' |
1eddc9a7 | 3 | import { UserRight, VideoBlacklistType } from '../../shared/models' |
7ccddd7b JM |
4 | import { VideoBlacklistModel } from '../models/video/video-blacklist' |
5 | import { UserModel } from '../models/account/user' | |
6 | import { VideoModel } from '../models/video/video' | |
7 | import { logger } from '../helpers/logger' | |
1eddc9a7 | 8 | import { UserAdminFlag } from '../../shared/models/users/user-flag.model' |
b4055e1c | 9 | import { Hooks } from './plugins/hooks' |
7ccddd7b | 10 | |
b4055e1c C |
11 | async function autoBlacklistVideoIfNeeded (video: VideoModel, user?: UserModel, transaction?: Transaction) { |
12 | const doAutoBlacklist = await Hooks.wrapPromise( | |
13 | autoBlacklistNeeded({ video, user }), | |
14 | 'filter:video.auto-blacklist.result' | |
15 | ) | |
7ccddd7b | 16 | |
b4055e1c | 17 | if (!doAutoBlacklist) return false |
7ccddd7b | 18 | |
7ccddd7b JM |
19 | const videoBlacklistToCreate = { |
20 | videoId: video.id, | |
21 | unfederated: true, | |
22 | reason: 'Auto-blacklisted. Moderator review required.', | |
23 | type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED | |
24 | } | |
b4055e1c | 25 | await VideoBlacklistModel.create(videoBlacklistToCreate, { transaction }) |
1eddc9a7 | 26 | |
7ccddd7b JM |
27 | logger.info('Video %s auto-blacklisted.', video.uuid) |
28 | ||
29 | return true | |
30 | } | |
31 | ||
b4055e1c C |
32 | async function autoBlacklistNeeded (parameters: { video: VideoModel, user?: UserModel }) { |
33 | const { user } = parameters | |
34 | ||
35 | if (!CONFIG.AUTO_BLACKLIST.VIDEOS.OF_USERS.ENABLED || !user) return false | |
36 | ||
37 | if (user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) || user.hasAdminFlag(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)) return false | |
38 | ||
39 | return true | |
40 | } | |
41 | ||
7ccddd7b JM |
42 | // --------------------------------------------------------------------------- |
43 | ||
44 | export { | |
45 | autoBlacklistVideoIfNeeded | |
46 | } |