preserve original variable names server-side
This commit is contained in:
parent
5baee5fca4
commit
3487330d30
34 changed files with 89 additions and 89 deletions
|
@ -37,7 +37,7 @@ export class AdminComponent implements OnInit {
|
|||
}
|
||||
|
||||
hasVideoBlocklistRight () {
|
||||
return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLOCKS)
|
||||
return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)
|
||||
}
|
||||
|
||||
hasConfigRight () {
|
||||
|
|
|
@ -25,7 +25,7 @@ export class ModerationComponent implements OnInit {
|
|||
}
|
||||
|
||||
hasVideoBlocklistRight () {
|
||||
return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLOCKS)
|
||||
return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)
|
||||
}
|
||||
|
||||
hasAccountsBlocklistRight () {
|
||||
|
|
|
@ -57,7 +57,7 @@ export const ModerationRoutes: Routes = [
|
|||
component: VideoBlockListComponent,
|
||||
canActivate: [ UserRightGuard ],
|
||||
data: {
|
||||
userRight: UserRight.MANAGE_VIDEO_BLOCKS,
|
||||
userRight: UserRight.MANAGE_VIDEO_BLACKLIST,
|
||||
meta: {
|
||||
title: 'Videos blocked'
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit, AfterV
|
|||
this.videoBlocklistService.blockVideo(videoAbuse.video.id, undefined, true)
|
||||
.subscribe(
|
||||
() => {
|
||||
this.notifier.success(this.i18n('Video blocklisted.'))
|
||||
this.notifier.success(this.i18n('Video blocked.'))
|
||||
|
||||
this.updateVideoAbuseState(videoAbuse, VideoAbuseState.ACCEPTED)
|
||||
},
|
||||
|
@ -123,7 +123,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit, AfterV
|
|||
this.videoBlocklistService.unblockVideo(videoAbuse.video.id)
|
||||
.subscribe(
|
||||
() => {
|
||||
this.notifier.success(this.i18n('Video unblocklisted.'))
|
||||
this.notifier.success(this.i18n('Video unblocked.'))
|
||||
|
||||
this.updateVideoAbuseState(videoAbuse, VideoAbuseState.ACCEPTED)
|
||||
},
|
||||
|
|
|
@ -3,7 +3,7 @@ import { SortMeta } from 'primeng/api'
|
|||
import { Notifier, ServerService } from '@app/core'
|
||||
import { ConfirmService } from '../../../core'
|
||||
import { RestPagination, RestTable, VideoBlockService } from '../../../shared'
|
||||
import { VideoBlocklist, VideoBlockType } from '../../../../../../shared'
|
||||
import { VideoBlacklist, VideoBlacklistType } from '../../../../../../shared'
|
||||
import { I18n } from '@ngx-translate/i18n-polyfill'
|
||||
import { DropdownAction } from '../../../shared/buttons/action-dropdown.component'
|
||||
import { Video } from '../../../shared/video/video.model'
|
||||
|
@ -18,13 +18,13 @@ import { VideoService } from '@app/shared/video/video.service'
|
|||
styleUrls: [ '../moderation.component.scss', './video-block-list.component.scss' ]
|
||||
})
|
||||
export class VideoBlockListComponent extends RestTable implements OnInit {
|
||||
blocklist: (VideoBlocklist & { reasonHtml?: string })[] = []
|
||||
blocklist: (VideoBlacklist & { reasonHtml?: string })[] = []
|
||||
totalRecords = 0
|
||||
sort: SortMeta = { field: 'createdAt', order: -1 }
|
||||
pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
|
||||
listBlockTypeFilter: VideoBlockType = undefined
|
||||
blocklistTypeFilter: VideoBlacklistType = undefined
|
||||
|
||||
videoBlocklistActions: DropdownAction<VideoBlocklist>[][] = []
|
||||
videoBlocklistActions: DropdownAction<VideoBlacklist>[][] = []
|
||||
|
||||
constructor (
|
||||
private notifier: Notifier,
|
||||
|
@ -99,7 +99,7 @@ export class VideoBlockListComponent extends RestTable implements OnInit {
|
|||
.subscribe(config => {
|
||||
// don't filter if auto-blacklist is not enabled as this will be the only list
|
||||
if (config.autoBlacklist.videos.ofUsers.enabled) {
|
||||
this.listBlockTypeFilter = VideoBlockType.MANUAL
|
||||
this.blocklistTypeFilter = VideoBlacklistType.MANUAL
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -141,7 +141,7 @@ export class VideoBlockListComponent extends RestTable implements OnInit {
|
|||
return 'VideoBlockListComponent'
|
||||
}
|
||||
|
||||
getVideoUrl (videoBlock: VideoBlocklist) {
|
||||
getVideoUrl (videoBlock: VideoBlacklist) {
|
||||
return Video.buildClientUrl(videoBlock.video.uuid)
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ export class VideoBlockListComponent extends RestTable implements OnInit {
|
|||
return this.markdownRenderer.textMarkdownToHTML(text)
|
||||
}
|
||||
|
||||
async unblockVideo (entry: VideoBlocklist) {
|
||||
async unblockVideo (entry: VideoBlacklist) {
|
||||
const confirmMessage = this.i18n(
|
||||
'Do you really want to unblock this video? It will be available again in the videos list.'
|
||||
)
|
||||
|
|
|
@ -52,7 +52,7 @@ export class UserCreateComponent extends UserEdit implements OnInit {
|
|||
role: this.userValidatorsService.USER_ROLE,
|
||||
videoQuota: this.userValidatorsService.USER_VIDEO_QUOTA,
|
||||
videoQuotaDaily: this.userValidatorsService.USER_VIDEO_QUOTA_DAILY,
|
||||
byPassAutoBlacklist: null
|
||||
byPassAutoBlock: null
|
||||
}, defaultValues)
|
||||
}
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@
|
|||
|
||||
<div class="form-group">
|
||||
<my-peertube-checkbox
|
||||
inputName="byPassAutoBlacklist" formControlName="byPassAutoBlacklist"
|
||||
inputName="byPassAutoBlock" formControlName="byPassAutoBlock"
|
||||
i18n-labelText labelText="Doesn't need review before a video goes public"
|
||||
></my-peertube-checkbox>
|
||||
</div>
|
||||
|
|
|
@ -88,7 +88,7 @@ export abstract class UserEdit extends FormReactive implements OnInit {
|
|||
}
|
||||
|
||||
protected buildAdminFlags (formValue: any) {
|
||||
return formValue.byPassAutoBlacklist ? UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK : UserAdminFlag.NONE
|
||||
return formValue.byPassAutoBlock ? UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST : UserAdminFlag.NONE
|
||||
}
|
||||
|
||||
protected buildQuotaOptions () {
|
||||
|
|
|
@ -56,7 +56,7 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
|
|||
role: this.userValidatorsService.USER_ROLE,
|
||||
videoQuota: this.userValidatorsService.USER_VIDEO_QUOTA,
|
||||
videoQuotaDaily: this.userValidatorsService.USER_VIDEO_QUOTA_DAILY,
|
||||
byPassAutoBlacklist: null
|
||||
byPassAutoBlock: null
|
||||
}, defaultValues)
|
||||
|
||||
this.paramsSub = this.route.params.subscribe(routeParams => {
|
||||
|
@ -125,7 +125,7 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
|
|||
role: userJson.role.toString(),
|
||||
videoQuota: userJson.videoQuota,
|
||||
videoQuotaDaily: userJson.videoQuotaDaily,
|
||||
byPassAutoBlacklist: userJson.adminFlags & UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK
|
||||
byPassAutoBlock: userJson.adminFlags & UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ export class MyAccountNotificationPreferencesComponent implements OnInit {
|
|||
|
||||
this.rightNotifications = {
|
||||
videoAbuseAsModerator: UserRight.MANAGE_VIDEO_ABUSES,
|
||||
videoAutoBlacklistAsModerator: UserRight.MANAGE_VIDEO_BLOCKS,
|
||||
videoAutoBlacklistAsModerator: UserRight.MANAGE_VIDEO_BLACKLIST,
|
||||
newUserRegistration: UserRight.MANAGE_USERS,
|
||||
newInstanceFollower: UserRight.MANAGE_SERVER_FOLLOW,
|
||||
autoInstanceFollowing: UserRight.MANAGE_CONFIGURATION
|
||||
|
|
|
@ -33,7 +33,7 @@ export class MenuComponent implements OnInit {
|
|||
[UserRight.MANAGE_USERS]: '/admin/users',
|
||||
[UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends',
|
||||
[UserRight.MANAGE_VIDEO_ABUSES]: '/admin/moderation/video-abuses',
|
||||
[UserRight.MANAGE_VIDEO_BLOCKS]: '/admin/moderation/video-blocks',
|
||||
[UserRight.MANAGE_VIDEO_BLACKLIST]: '/admin/moderation/video-blocks',
|
||||
[UserRight.MANAGE_JOBS]: '/admin/jobs',
|
||||
[UserRight.MANAGE_CONFIGURATION]: '/admin/config'
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ export class MenuComponent implements OnInit {
|
|||
UserRight.MANAGE_USERS,
|
||||
UserRight.MANAGE_SERVER_FOLLOW,
|
||||
UserRight.MANAGE_VIDEO_ABUSES,
|
||||
UserRight.MANAGE_VIDEO_BLOCKS,
|
||||
UserRight.MANAGE_VIDEO_BLACKLIST,
|
||||
UserRight.MANAGE_JOBS,
|
||||
UserRight.MANAGE_CONFIGURATION
|
||||
]
|
||||
|
|
|
@ -96,7 +96,7 @@ export class UserNotification implements UserNotificationServer {
|
|||
this.videoUrl = this.buildVideoUrl(this.video)
|
||||
break
|
||||
|
||||
case UserNotificationType.UNBLOCK_ON_MY_VIDEO:
|
||||
case UserNotificationType.UNBLACKLIST_ON_MY_VIDEO:
|
||||
this.videoUrl = this.buildVideoUrl(this.video)
|
||||
break
|
||||
|
||||
|
@ -112,7 +112,7 @@ export class UserNotification implements UserNotificationServer {
|
|||
this.videoUrl = this.buildVideoUrl(this.videoAbuse.video)
|
||||
break
|
||||
|
||||
case UserNotificationType.VIDEO_AUTO_BLOCK_FOR_MODERATORS:
|
||||
case UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS:
|
||||
this.videoAutoBlacklistUrl = '/admin/moderation/video-auto-blacklist/list'
|
||||
// Backward compatibility where we did not assign videoBlacklist to this type of notification before
|
||||
if (!this.videoBlacklist) this.videoBlacklist = { id: null, video: this.video }
|
||||
|
@ -120,7 +120,7 @@ export class UserNotification implements UserNotificationServer {
|
|||
this.videoUrl = this.buildVideoUrl(this.videoBlacklist.video)
|
||||
break
|
||||
|
||||
case UserNotificationType.BLOCK_ON_MY_VIDEO:
|
||||
case UserNotificationType.BLACKLIST_ON_MY_VIDEO:
|
||||
this.videoUrl = this.buildVideoUrl(this.videoBlacklist.video)
|
||||
break
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
</ng-template>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngSwitchCase="UserNotificationType.UNBLOCK_ON_MY_VIDEO">
|
||||
<ng-container *ngSwitchCase="UserNotificationType.UNBLACKLIST_ON_MY_VIDEO">
|
||||
<my-global-icon iconName="undo"></my-global-icon>
|
||||
|
||||
<div class="message" i18n>
|
||||
|
@ -34,7 +34,7 @@
|
|||
</div>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngSwitchCase="UserNotificationType.BLOCK_ON_MY_VIDEO">
|
||||
<ng-container *ngSwitchCase="UserNotificationType.BLACKLIST_ON_MY_VIDEO">
|
||||
<my-global-icon iconName="no"></my-global-icon>
|
||||
|
||||
<div class="message" i18n>
|
||||
|
@ -50,11 +50,11 @@
|
|||
</div>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngSwitchCase="UserNotificationType.VIDEO_AUTO_BLOCK_FOR_MODERATORS">
|
||||
<ng-container *ngSwitchCase="UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS">
|
||||
<my-global-icon iconName="no"></my-global-icon>
|
||||
|
||||
<div class="message" i18n>
|
||||
The recently added video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.videoBlacklist.video.name }}</a> has been <a (click)="markAsRead(notification)" [routerLink]="notification.videoAutoBlacklistUrl">auto-blocked</a>
|
||||
The recently added video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.videoBlacklist.video.name }}</a> has been <a (click)="markAsRead(notification)" [routerLink]="notification.videoAutoBlacklistUrl">automatically blocked</a>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ import { HttpClient, HttpParams } from '@angular/common/http'
|
|||
import { Injectable } from '@angular/core'
|
||||
import { SortMeta } from 'primeng/api'
|
||||
import { from as observableFrom, Observable } from 'rxjs'
|
||||
import { VideoBlocklist, VideoBlockType, ResultList } from '../../../../../shared'
|
||||
import { VideoBlacklist, VideoBlacklistType, ResultList } from '../../../../../shared'
|
||||
import { environment } from '../../../environments/environment'
|
||||
import { RestExtractor, RestPagination, RestService } from '../rest'
|
||||
|
||||
|
@ -21,8 +21,8 @@ export class VideoBlockService {
|
|||
pagination: RestPagination
|
||||
sort: SortMeta
|
||||
search?: string
|
||||
type?: VideoBlockType
|
||||
}): Observable<ResultList<VideoBlocklist>> {
|
||||
type?: VideoBlacklistType
|
||||
}): Observable<ResultList<VideoBlacklist>> {
|
||||
const { pagination, sort, search, type } = options
|
||||
|
||||
let params = new HttpParams()
|
||||
|
@ -33,8 +33,8 @@ export class VideoBlockService {
|
|||
type: {
|
||||
prefix: 'type:',
|
||||
handler: v => {
|
||||
if (v === 'manual') return VideoBlockType.MANUAL
|
||||
if (v === 'auto') return VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
if (v === 'manual') return VideoBlacklistType.MANUAL
|
||||
if (v === 'auto') return VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
|
||||
return undefined
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ export class VideoBlockService {
|
|||
params = this.restService.addObjectParams(params, filters)
|
||||
}
|
||||
|
||||
return this.authHttp.get<ResultList<VideoBlocklist>>(VideoBlockService.BASE_VIDEOS_URL + 'blacklist', { params })
|
||||
return this.authHttp.get<ResultList<VideoBlacklist>>(VideoBlockService.BASE_VIDEOS_URL + 'blacklist', { params })
|
||||
.pipe(
|
||||
map(res => this.restExtractor.convertResultListDateToHuman(res)),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
|
|
|
@ -164,11 +164,11 @@ export class Video implements VideoServerModel {
|
|||
}
|
||||
|
||||
isBlockableBy (user: AuthUser) {
|
||||
return this.blacklisted !== true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLOCKS) === true
|
||||
return this.blacklisted !== true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) === true
|
||||
}
|
||||
|
||||
isUnblockableBy (user: AuthUser) {
|
||||
return this.blacklisted === true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLOCKS) === true
|
||||
return this.blacklisted === true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) === true
|
||||
}
|
||||
|
||||
isUpdatableBy (user: AuthUser) {
|
||||
|
|
|
@ -335,7 +335,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
this.videoCaptionService.listCaptions(videoId)
|
||||
])
|
||||
.pipe(
|
||||
// If 401, the video is private or blocklisted so redirect to 404
|
||||
// If 401, the video is private or blocked so redirect to 404
|
||||
catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 401, 403, 404 ]))
|
||||
)
|
||||
.subscribe(([ video, captionsResult ]) => {
|
||||
|
@ -364,7 +364,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
|
||||
this.playlistService.getVideoPlaylist(playlistId)
|
||||
.pipe(
|
||||
// If 401, the video is private or blocklisted so redirect to 404
|
||||
// If 401, the video is private or blocked so redirect to 404
|
||||
catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 401, 403, 404 ]))
|
||||
)
|
||||
.subscribe(playlist => {
|
||||
|
|
|
@ -23,14 +23,14 @@ const blacklistRouter = express.Router()
|
|||
|
||||
blacklistRouter.post('/:videoId/blacklist',
|
||||
authenticate,
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLOCKS),
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
|
||||
asyncMiddleware(videosBlacklistAddValidator),
|
||||
asyncMiddleware(addVideoToBlacklistController)
|
||||
)
|
||||
|
||||
blacklistRouter.get('/blacklist',
|
||||
authenticate,
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLOCKS),
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
|
||||
paginationValidator,
|
||||
blacklistSortValidator,
|
||||
setBlacklistSort,
|
||||
|
@ -41,14 +41,14 @@ blacklistRouter.get('/blacklist',
|
|||
|
||||
blacklistRouter.put('/:videoId/blacklist',
|
||||
authenticate,
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLOCKS),
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
|
||||
asyncMiddleware(videosBlacklistUpdateValidator),
|
||||
asyncMiddleware(updateVideoBlacklistController)
|
||||
)
|
||||
|
||||
blacklistRouter.delete('/:videoId/blacklist',
|
||||
authenticate,
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLOCKS),
|
||||
ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST),
|
||||
asyncMiddleware(videosBlacklistRemoveValidator),
|
||||
asyncMiddleware(removeVideoFromBlacklistController)
|
||||
)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import validator from 'validator'
|
||||
import { exists } from './misc'
|
||||
import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
|
||||
import { VideoBlockType } from '../../../shared/models/videos'
|
||||
import { VideoBlacklistType } from '../../../shared/models/videos'
|
||||
|
||||
const VIDEO_BLACKLIST_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEO_BLACKLIST
|
||||
|
||||
|
@ -10,7 +10,7 @@ function isVideoBlacklistReasonValid (value: string) {
|
|||
}
|
||||
|
||||
function isVideoBlacklistTypeValid (value: any) {
|
||||
return exists(value) && validator.isInt('' + value) && VideoBlockType[value] !== undefined
|
||||
return exists(value) && validator.isInt('' + value) && VideoBlacklistType[value] !== undefined
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as Sequelize from 'sequelize'
|
||||
import { VideoBlockType } from '../../../shared/models/videos'
|
||||
import { VideoBlacklistType } from '../../../shared/models/videos'
|
||||
|
||||
async function up (utils: {
|
||||
transaction: Sequelize.Transaction
|
||||
|
@ -18,7 +18,7 @@ async function up (utils: {
|
|||
}
|
||||
|
||||
{
|
||||
const query = 'UPDATE "videoBlacklist" SET "type" = ' + VideoBlockType.MANUAL
|
||||
const query = 'UPDATE "videoBlacklist" SET "type" = ' + VideoBlacklistType.MANUAL
|
||||
await utils.sequelize.query(query)
|
||||
}
|
||||
|
||||
|
|
|
@ -387,7 +387,7 @@ class Notifier {
|
|||
}
|
||||
|
||||
private async notifyModeratorsOfVideoAutoBlacklist (videoBlacklist: MVideoBlacklistLightVideo) {
|
||||
const moderators = await UserModel.listWithRight(UserRight.MANAGE_VIDEO_BLOCKS)
|
||||
const moderators = await UserModel.listWithRight(UserRight.MANAGE_VIDEO_BLACKLIST)
|
||||
if (moderators.length === 0) return
|
||||
|
||||
logger.info('Notifying %s moderators of video auto-blacklist %s.', moderators.length, videoBlacklist.Video.url)
|
||||
|
@ -398,7 +398,7 @@ class Notifier {
|
|||
|
||||
async function notificationCreator (user: MUserWithNotificationSetting) {
|
||||
const notification = await UserNotificationModel.create<UserNotificationModelForApi>({
|
||||
type: UserNotificationType.VIDEO_AUTO_BLOCK_FOR_MODERATORS,
|
||||
type: UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS,
|
||||
userId: user.id,
|
||||
videoBlacklistId: videoBlacklist.id
|
||||
})
|
||||
|
@ -426,7 +426,7 @@ class Notifier {
|
|||
|
||||
async function notificationCreator (user: MUserWithNotificationSetting) {
|
||||
const notification = await UserNotificationModel.create<UserNotificationModelForApi>({
|
||||
type: UserNotificationType.BLOCK_ON_MY_VIDEO,
|
||||
type: UserNotificationType.BLACKLIST_ON_MY_VIDEO,
|
||||
userId: user.id,
|
||||
videoBlacklistId: videoBlacklist.id
|
||||
})
|
||||
|
@ -454,7 +454,7 @@ class Notifier {
|
|||
|
||||
async function notificationCreator (user: MUserWithNotificationSetting) {
|
||||
const notification = await UserNotificationModel.create<UserNotificationModelForApi>({
|
||||
type: UserNotificationType.UNBLOCK_ON_MY_VIDEO,
|
||||
type: UserNotificationType.UNBLACKLIST_ON_MY_VIDEO,
|
||||
userId: user.id,
|
||||
videoId: video.id
|
||||
})
|
||||
|
|
|
@ -8,7 +8,7 @@ import {
|
|||
MVideoFullLight,
|
||||
MVideoWithBlacklistLight
|
||||
} from '@server/typings/models'
|
||||
import { UserRight, VideoBlacklistCreate, VideoBlockType } from '../../shared/models'
|
||||
import { UserRight, VideoBlacklistCreate, VideoBlacklistType } from '../../shared/models'
|
||||
import { UserAdminFlag } from '../../shared/models/users/user-flag.model'
|
||||
import { logger } from '../helpers/logger'
|
||||
import { CONFIG } from '../initializers/config'
|
||||
|
@ -39,7 +39,7 @@ async function autoBlacklistVideoIfNeeded (parameters: {
|
|||
videoId: video.id,
|
||||
unfederated: true,
|
||||
reason: 'Auto-blacklisted. Moderator review required.',
|
||||
type: VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
}
|
||||
const [ videoBlacklist ] = await VideoBlacklistModel.findOrCreate<MVideoBlacklistVideo>({
|
||||
where: {
|
||||
|
@ -64,7 +64,7 @@ async function blacklistVideo (videoInstance: MVideoAccountLight, options: Video
|
|||
videoId: videoInstance.id,
|
||||
unfederated: options.unfederate === true,
|
||||
reason: options.reason,
|
||||
type: VideoBlockType.MANUAL
|
||||
type: VideoBlacklistType.MANUAL
|
||||
}
|
||||
)
|
||||
blacklist.Video = videoInstance
|
||||
|
@ -94,7 +94,7 @@ async function unblacklistVideo (videoBlacklist: MVideoBlacklist, video: MVideoF
|
|||
|
||||
Notifier.Instance.notifyOnVideoUnblacklist(video)
|
||||
|
||||
if (videoBlacklistType === VideoBlockType.AUTO_BEFORE_PUBLISHED) {
|
||||
if (videoBlacklistType === VideoBlacklistType.AUTO_BEFORE_PUBLISHED) {
|
||||
Notifier.Instance.notifyOnVideoPublishedAfterRemovedFromAutoBlacklist(video)
|
||||
|
||||
// Delete on object so new video notifications will send
|
||||
|
@ -126,7 +126,7 @@ function autoBlacklistNeeded (parameters: {
|
|||
if (!CONFIG.AUTO_BLACKLIST.VIDEOS.OF_USERS.ENABLED || !user) return false
|
||||
if (isRemote || isNew === false) return false
|
||||
|
||||
if (user.hasRight(UserRight.MANAGE_VIDEO_BLOCKS) || user.hasAdminFlag(UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK)) return false
|
||||
if (user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) || user.hasAdminFlag(UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST)) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -739,11 +739,11 @@ export class UserModel extends Model<UserModel> {
|
|||
const videoUserId = video.VideoChannel.Account.userId
|
||||
|
||||
if (video.isBlacklisted()) {
|
||||
return videoUserId === this.id || this.hasRight(UserRight.MANAGE_VIDEO_BLOCKS)
|
||||
return videoUserId === this.id || this.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)
|
||||
}
|
||||
|
||||
if (video.privacy === VideoPrivacy.PRIVATE) {
|
||||
return video.VideoChannel && videoUserId === this.id || this.hasRight(UserRight.MANAGE_VIDEO_BLOCKS)
|
||||
return video.VideoChannel && videoUserId === this.id || this.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)
|
||||
}
|
||||
|
||||
if (video.privacy === VideoPrivacy.INTERNAL) return true
|
||||
|
|
|
@ -3,7 +3,7 @@ import { getBlacklistSort, SortType, throwIfNotValid, searchAttribute } from '..
|
|||
import { VideoModel } from './video'
|
||||
import { ScopeNames as VideoChannelScopeNames, SummaryOptions, VideoChannelModel } from './video-channel'
|
||||
import { isVideoBlacklistReasonValid, isVideoBlacklistTypeValid } from '../../helpers/custom-validators/video-blacklist'
|
||||
import { VideoBlocklist, VideoBlockType } from '../../../shared/models/videos'
|
||||
import { VideoBlacklist, VideoBlacklistType } from '../../../shared/models/videos'
|
||||
import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
|
||||
import { FindOptions } from 'sequelize'
|
||||
import { ThumbnailModel } from './thumbnail'
|
||||
|
@ -34,7 +34,7 @@ export class VideoBlacklistModel extends Model<VideoBlacklistModel> {
|
|||
@Default(null)
|
||||
@Is('VideoBlacklistType', value => throwIfNotValid(value, isVideoBlacklistTypeValid, 'type'))
|
||||
@Column
|
||||
type: VideoBlockType
|
||||
type: VideoBlacklistType
|
||||
|
||||
@CreatedAt
|
||||
createdAt: Date
|
||||
|
@ -59,7 +59,7 @@ export class VideoBlacklistModel extends Model<VideoBlacklistModel> {
|
|||
count: number
|
||||
sort: SortType
|
||||
search?: string
|
||||
type?: VideoBlockType
|
||||
type?: VideoBlacklistType
|
||||
}) {
|
||||
const { start, count, sort, search, type } = parameters
|
||||
|
||||
|
@ -119,7 +119,7 @@ export class VideoBlacklistModel extends Model<VideoBlacklistModel> {
|
|||
return VideoBlacklistModel.findOne(query)
|
||||
}
|
||||
|
||||
toFormattedJSON (this: MVideoBlacklistFormattable): VideoBlocklist {
|
||||
toFormattedJSON (this: MVideoBlacklistFormattable): VideoBlacklist {
|
||||
return {
|
||||
id: this.id,
|
||||
createdAt: this.createdAt,
|
||||
|
|
|
@ -188,7 +188,7 @@ describe('Test users API validators', function () {
|
|||
videoQuota: -1,
|
||||
videoQuotaDaily: -1,
|
||||
role: UserRole.USER,
|
||||
adminFlags: UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK
|
||||
adminFlags: UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST
|
||||
}
|
||||
|
||||
it('Should fail with a too small username', async function () {
|
||||
|
|
|
@ -24,7 +24,7 @@ import {
|
|||
checkBadSortPagination,
|
||||
checkBadStartPagination
|
||||
} from '../../../../shared/extra-utils/requests/check-api-params'
|
||||
import { VideoBlockType, VideoDetails } from '../../../../shared/models/videos'
|
||||
import { VideoBlacklistType, VideoDetails } from '../../../../shared/models/videos'
|
||||
import { expect } from 'chai'
|
||||
|
||||
describe('Test video blacklist API validators', function () {
|
||||
|
@ -243,7 +243,7 @@ describe('Test video blacklist API validators', function () {
|
|||
})
|
||||
|
||||
it('Should succeed with the correct parameters', async function () {
|
||||
await getBlacklistedVideosList({ url: servers[0].url, token: servers[0].accessToken, type: VideoBlockType.MANUAL })
|
||||
await getBlacklistedVideosList({ url: servers[0].url, token: servers[0].accessToken, type: VideoBlacklistType.MANUAL })
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -265,7 +265,7 @@ describe('Test users', function () {
|
|||
username: user.username,
|
||||
password: user.password,
|
||||
videoQuota: 2 * 1024 * 1024,
|
||||
adminFlags: UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK
|
||||
adminFlags: UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -292,7 +292,7 @@ describe('Test users', function () {
|
|||
}
|
||||
|
||||
expect(userMe.adminFlags).to.be.undefined
|
||||
expect(userGet.adminFlags).to.equal(UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK)
|
||||
expect(userGet.adminFlags).to.equal(UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST)
|
||||
|
||||
expect(userMe.specialPlaylists).to.have.lengthOf(1)
|
||||
expect(userMe.specialPlaylists[0].type).to.equal(VideoPlaylistType.WATCH_LATER)
|
||||
|
|
|
@ -25,7 +25,7 @@ import {
|
|||
} from '../../../../shared/extra-utils/index'
|
||||
import { doubleFollow } from '../../../../shared/extra-utils/server/follows'
|
||||
import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
|
||||
import { VideoBlocklist, VideoBlockType } from '../../../../shared/models/videos'
|
||||
import { VideoBlacklist, VideoBlacklistType } from '../../../../shared/models/videos'
|
||||
import { UserAdminFlag } from '../../../../shared/models/users/user-flag.model'
|
||||
import { User, UserRole } from '../../../../shared/models/users'
|
||||
import { getMagnetURI, getYoutubeVideoUrl, importVideo } from '../../../../shared/extra-utils/videos/video-imports'
|
||||
|
@ -127,7 +127,7 @@ describe('Test video blacklist', function () {
|
|||
const res = await getBlacklistedVideosList({
|
||||
url: servers[0].url,
|
||||
token: servers[0].accessToken,
|
||||
type: VideoBlockType.MANUAL
|
||||
type: VideoBlacklistType.MANUAL
|
||||
})
|
||||
|
||||
expect(res.body.total).to.equal(2)
|
||||
|
@ -141,7 +141,7 @@ describe('Test video blacklist', function () {
|
|||
const res = await getBlacklistedVideosList({
|
||||
url: servers[0].url,
|
||||
token: servers[0].accessToken,
|
||||
type: VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
})
|
||||
|
||||
expect(res.body.total).to.equal(0)
|
||||
|
@ -219,7 +219,7 @@ describe('Test video blacklist', function () {
|
|||
})
|
||||
|
||||
describe('When removing a blacklisted video', function () {
|
||||
let videoToRemove: VideoBlocklist
|
||||
let videoToRemove: VideoBlacklist
|
||||
let blacklist = []
|
||||
|
||||
it('Should not have any video in videos list on server 1', async function () {
|
||||
|
@ -328,7 +328,7 @@ describe('Test video blacklist', function () {
|
|||
it('Should have the correct video blacklist unfederate attribute', async function () {
|
||||
const res = await getBlacklistedVideosList({ url: servers[0].url, token: servers[0].accessToken, sort: 'createdAt' })
|
||||
|
||||
const blacklistedVideos: VideoBlocklist[] = res.body.data
|
||||
const blacklistedVideos: VideoBlacklist[] = res.body.data
|
||||
const video3Blacklisted = blacklistedVideos.find(b => b.video.uuid === video3UUID)
|
||||
const video4Blacklisted = blacklistedVideos.find(b => b.video.uuid === video4UUID)
|
||||
|
||||
|
@ -396,7 +396,7 @@ describe('Test video blacklist', function () {
|
|||
url: servers[0].url,
|
||||
accessToken: servers[0].accessToken,
|
||||
username: user.username,
|
||||
adminFlags: UserAdminFlag.BYPASS_VIDEO_AUTO_BLOCK,
|
||||
adminFlags: UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST,
|
||||
password: user.password,
|
||||
role: UserRole.USER
|
||||
})
|
||||
|
@ -413,7 +413,7 @@ describe('Test video blacklist', function () {
|
|||
const res = await getBlacklistedVideosList({
|
||||
url: servers[0].url,
|
||||
token: servers[0].accessToken,
|
||||
type: VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
})
|
||||
|
||||
expect(res.body.total).to.equal(1)
|
||||
|
@ -434,7 +434,7 @@ describe('Test video blacklist', function () {
|
|||
url: servers[0].url,
|
||||
token: servers[0].accessToken,
|
||||
sort: 'createdAt',
|
||||
type: VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
})
|
||||
|
||||
expect(res.body.total).to.equal(2)
|
||||
|
@ -453,7 +453,7 @@ describe('Test video blacklist', function () {
|
|||
url: servers[0].url,
|
||||
token: servers[0].accessToken,
|
||||
sort: 'createdAt',
|
||||
type: VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
})
|
||||
|
||||
expect(res.body.total).to.equal(3)
|
||||
|
@ -466,7 +466,7 @@ describe('Test video blacklist', function () {
|
|||
const res = await getBlacklistedVideosList({
|
||||
url: servers[0].url,
|
||||
token: servers[0].accessToken,
|
||||
type: VideoBlockType.AUTO_BEFORE_PUBLISHED
|
||||
type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED
|
||||
})
|
||||
|
||||
expect(res.body.total).to.equal(3)
|
||||
|
|
|
@ -455,7 +455,7 @@ async function checkNewVideoAbuseForModerators (base: CheckerBaseParams, videoUU
|
|||
}
|
||||
|
||||
async function checkVideoAutoBlacklistForModerators (base: CheckerBaseParams, videoUUID: string, videoName: string, type: CheckerType) {
|
||||
const notificationType = UserNotificationType.VIDEO_AUTO_BLOCK_FOR_MODERATORS
|
||||
const notificationType = UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
|
||||
|
||||
function notificationChecker (notification: UserNotification, type: CheckerType) {
|
||||
if (type === 'presence') {
|
||||
|
@ -486,8 +486,8 @@ async function checkNewBlacklistOnMyVideo (
|
|||
blacklistType: 'blacklist' | 'unblacklist'
|
||||
) {
|
||||
const notificationType = blacklistType === 'blacklist'
|
||||
? UserNotificationType.BLOCK_ON_MY_VIDEO
|
||||
: UserNotificationType.UNBLOCK_ON_MY_VIDEO
|
||||
? UserNotificationType.BLACKLIST_ON_MY_VIDEO
|
||||
: UserNotificationType.UNBLACKLIST_ON_MY_VIDEO
|
||||
|
||||
function notificationChecker (notification: UserNotification) {
|
||||
expect(notification).to.not.be.undefined
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as request from 'supertest'
|
||||
import { VideoBlockType } from '../../models/videos'
|
||||
import { VideoBlacklistType } from '../../models/videos'
|
||||
import { makeGetRequest } from '..'
|
||||
|
||||
function addVideoToBlacklist (
|
||||
|
@ -45,7 +45,7 @@ function getBlacklistedVideosList (parameters: {
|
|||
url: string
|
||||
token: string
|
||||
sort?: string
|
||||
type?: VideoBlockType
|
||||
type?: VideoBlacklistType
|
||||
specialStatus?: number
|
||||
}) {
|
||||
const { url, token, sort, type, specialStatus = 200 } = parameters
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
export enum UserAdminFlag {
|
||||
NONE = 0,
|
||||
BYPASS_VIDEO_AUTO_BLOCK = 1 << 0
|
||||
BYPASS_VIDEO_AUTO_BLACKLIST = 1 << 0
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ export enum UserNotificationType {
|
|||
NEW_COMMENT_ON_MY_VIDEO = 2,
|
||||
NEW_VIDEO_ABUSE_FOR_MODERATORS = 3,
|
||||
|
||||
BLOCK_ON_MY_VIDEO = 4,
|
||||
UNBLOCK_ON_MY_VIDEO = 5,
|
||||
BLACKLIST_ON_MY_VIDEO = 4,
|
||||
UNBLACKLIST_ON_MY_VIDEO = 5,
|
||||
|
||||
MY_VIDEO_PUBLISHED = 6,
|
||||
|
||||
|
@ -17,7 +17,7 @@ export enum UserNotificationType {
|
|||
NEW_FOLLOW = 10,
|
||||
COMMENT_MENTION = 11,
|
||||
|
||||
VIDEO_AUTO_BLOCK_FOR_MODERATORS = 12,
|
||||
VIDEO_AUTO_BLACKLIST_FOR_MODERATORS = 12,
|
||||
|
||||
NEW_INSTANCE_FOLLOWER = 13,
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ export enum UserRight {
|
|||
MANAGE_ACCOUNTS_BLOCKLIST,
|
||||
MANAGE_SERVERS_BLOCKLIST,
|
||||
|
||||
MANAGE_VIDEO_BLOCKS,
|
||||
MANAGE_VIDEO_BLACKLIST,
|
||||
|
||||
REMOVE_ANY_VIDEO,
|
||||
REMOVE_ANY_VIDEO_CHANNEL,
|
||||
|
|
|
@ -19,7 +19,7 @@ const userRoleRights: { [ id in UserRole ]: UserRight[] } = {
|
|||
],
|
||||
|
||||
[UserRole.MODERATOR]: [
|
||||
UserRight.MANAGE_VIDEO_BLOCKS,
|
||||
UserRight.MANAGE_VIDEO_BLACKLIST,
|
||||
UserRight.MANAGE_VIDEO_ABUSES,
|
||||
UserRight.REMOVE_ANY_VIDEO,
|
||||
UserRight.REMOVE_ANY_VIDEO_CHANNEL,
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import { Video } from '../video.model'
|
||||
|
||||
export enum VideoBlockType {
|
||||
export enum VideoBlacklistType {
|
||||
MANUAL = 1,
|
||||
AUTO_BEFORE_PUBLISHED = 2
|
||||
}
|
||||
|
||||
export interface VideoBlocklist {
|
||||
export interface VideoBlacklist {
|
||||
id: number
|
||||
unfederated: boolean
|
||||
reason?: string
|
||||
type: VideoBlockType
|
||||
type: VideoBlacklistType
|
||||
|
||||
video: Video
|
||||
|
||||
|
|
Loading…
Reference in a new issue