]>
Commit | Line | Data |
---|---|---|
7ccddd7b | 1 | import * as sequelize 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' |
7ccddd7b JM |
9 | |
10 | async function autoBlacklistVideoIfNeeded (video: VideoModel, user: UserModel, transaction: sequelize.Transaction) { | |
11 | if (!CONFIG.AUTO_BLACKLIST.VIDEOS.OF_USERS.ENABLED) return false | |
12 | ||
1eddc9a7 | 13 | if (user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) || user.hasAdminFlag(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)) return false |
7ccddd7b JM |
14 | |
15 | const sequelizeOptions = { transaction } | |
16 | const videoBlacklistToCreate = { | |
17 | videoId: video.id, | |
18 | unfederated: true, | |
19 | reason: 'Auto-blacklisted. Moderator review required.', | |
20 | type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED | |
21 | } | |
22 | await VideoBlacklistModel.create(videoBlacklistToCreate, sequelizeOptions) | |
1eddc9a7 | 23 | |
7ccddd7b JM |
24 | logger.info('Video %s auto-blacklisted.', video.uuid) |
25 | ||
26 | return true | |
27 | } | |
28 | ||
29 | // --------------------------------------------------------------------------- | |
30 | ||
31 | export { | |
32 | autoBlacklistVideoIfNeeded | |
33 | } |