import { AcceptResult, isLocalVideoCommentReplyAccepted, isLocalVideoThreadAccepted } from '../../../lib/moderation'
import { Hooks } from '../../../lib/plugins/hooks'
import { MCommentOwnerVideoReply, MVideo, MVideoFullLight } from '../../../types/models/video'
-import { areValidationErrors, doesVideoCommentExist, doesVideoCommentThreadExist, doesVideoExist, isValidVideoIdParam } from '../shared'
+import {
+ areValidationErrors,
+ checkCanSeeVideo,
+ doesVideoCommentExist,
+ doesVideoCommentThreadExist,
+ doesVideoExist,
+ isValidVideoIdParam
+} from '../shared'
const listVideoCommentsValidator = [
query('isLocal')
- .optional()
- .customSanitizer(toBooleanOrNull)
- .custom(isBooleanValid)
- .withMessage('Should have a valid is local boolean'),
+ .optional()
+ .customSanitizer(toBooleanOrNull)
+ .custom(isBooleanValid)
+ .withMessage('Should have a valid isLocal boolean'),
+
+ query('onLocalVideo')
+ .optional()
+ .customSanitizer(toBooleanOrNull)
+ .custom(isBooleanValid)
+ .withMessage('Should have a valid onLocalVideo boolean'),
query('search')
.optional()
- .custom(exists).withMessage('Should have a valid search'),
+ .custom(exists),
query('searchAccount')
.optional()
- .custom(exists).withMessage('Should have a valid account search'),
+ .custom(exists),
query('searchVideo')
.optional()
- .custom(exists).withMessage('Should have a valid video search'),
+ .custom(exists),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking listVideoCommentsValidator parameters.', { parameters: req.query })
-
if (areValidationErrors(req, res)) return
return next()
isValidVideoIdParam('videoId'),
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking listVideoCommentThreads parameters.', { parameters: req.params })
-
if (areValidationErrors(req, res)) return
if (!await doesVideoExist(req.params.videoId, res, 'only-video')) return
+ if (!await checkCanSeeVideo({ req, res, paramId: req.params.videoId, video: res.locals.onlyVideo })) return
+
return next()
}
]
isValidVideoIdParam('videoId'),
param('threadId')
- .custom(isIdValid).not().isEmpty().withMessage('Should have a valid threadId'),
+ .custom(isIdValid),
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking listVideoThreadComments parameters.', { parameters: req.params })
-
if (areValidationErrors(req, res)) return
if (!await doesVideoExist(req.params.videoId, res, 'only-video')) return
if (!await doesVideoCommentThreadExist(req.params.threadId, res.locals.onlyVideo, res)) return
+ if (!await checkCanSeeVideo({ req, res, paramId: req.params.videoId, video: res.locals.onlyVideo })) return
+
return next()
}
]
isValidVideoIdParam('videoId'),
body('text')
- .custom(isValidVideoCommentText).not().isEmpty().withMessage('Should have a valid comment text'),
+ .custom(isValidVideoCommentText),
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking addVideoCommentThread parameters.', { parameters: req.params, body: req.body })
-
if (areValidationErrors(req, res)) return
if (!await doesVideoExist(req.params.videoId, res)) return
+
+ if (!await checkCanSeeVideo({ req, res, paramId: req.params.videoId, video: res.locals.videoAll })) return
+
if (!isVideoCommentsEnabled(res.locals.videoAll, res)) return
if (!await isVideoCommentAccepted(req, res, res.locals.videoAll, false)) return
const addVideoCommentReplyValidator = [
isValidVideoIdParam('videoId'),
- param('commentId').custom(isIdValid).not().isEmpty().withMessage('Should have a valid commentId'),
+ param('commentId').custom(isIdValid),
- body('text').custom(isValidVideoCommentText).not().isEmpty().withMessage('Should have a valid comment text'),
+ body('text').custom(isValidVideoCommentText),
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking addVideoCommentReply parameters.', { parameters: req.params, body: req.body })
-
if (areValidationErrors(req, res)) return
if (!await doesVideoExist(req.params.videoId, res)) return
+
+ if (!await checkCanSeeVideo({ req, res, paramId: req.params.videoId, video: res.locals.videoAll })) return
+
if (!isVideoCommentsEnabled(res.locals.videoAll, res)) return
if (!await doesVideoCommentExist(req.params.commentId, res.locals.videoAll, res)) return
if (!await isVideoCommentAccepted(req, res, res.locals.videoAll, true)) return
isValidVideoIdParam('videoId'),
param('commentId')
- .custom(isIdValid).not().isEmpty().withMessage('Should have a valid commentId'),
+ .custom(isIdValid),
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking videoCommentGetValidator parameters.', { parameters: req.params })
-
if (areValidationErrors(req, res)) return
if (!await doesVideoExist(req.params.videoId, res, 'id')) return
if (!await doesVideoCommentExist(req.params.commentId, res.locals.videoId, res)) return
const removeVideoCommentValidator = [
isValidVideoIdParam('videoId'),
- param('commentId').custom(isIdValid).not().isEmpty().withMessage('Should have a valid commentId'),
+ param('commentId')
+ .custom(isIdValid),
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking removeVideoCommentValidator parameters.', { parameters: req.params })
-
if (areValidationErrors(req, res)) return
if (!await doesVideoExist(req.params.videoId, res)) return
if (!await doesVideoCommentExist(req.params.commentId, res.locals.videoAll, res)) return
const acceptParameters = {
video,
commentBody: req.body,
- user: res.locals.oauth.token.User
+ user: res.locals.oauth.token.User,
+ req
}
let acceptedResult: AcceptResult
res.fail({
status: HttpStatusCode.FORBIDDEN_403,
- message: acceptedResult?.errorMessage || 'Refused local comment'
+ message: acceptedResult?.errorMessage || 'Comment has been rejected.'
})
return false
}