X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fuser-subscriptions.ts;h=c5f8d9d4ce996b7fa9704a2181cfd9dc8650cea0;hb=d9eaee3939bf2e93e5d775d32bce77842201faba;hp=f331b6c34c13d1fe55a227911e89af3ee7a22677;hpb=06a05d5f4784a7cbb27aa1188385b5679845dad8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/user-subscriptions.ts b/server/middlewares/validators/user-subscriptions.ts index f331b6c34..c5f8d9d4c 100644 --- a/server/middlewares/validators/user-subscriptions.ts +++ b/server/middlewares/validators/user-subscriptions.ts @@ -1,12 +1,13 @@ import * as express from 'express' import 'express-validator' -import { body, param } from 'express-validator/check' +import { body, param, query } from 'express-validator/check' import { logger } from '../../helpers/logger' import { areValidationErrors } from './utils' import { ActorFollowModel } from '../../models/activitypub/actor-follow' -import { isValidActorHandle } from '../../helpers/custom-validators/activitypub/actor' +import { areValidActorHandles, isValidActorHandle } from '../../helpers/custom-validators/activitypub/actor' import { UserModel } from '../../models/account/user' import { CONFIG } from '../../initializers' +import { toArray } from '../../helpers/custom-validators/misc' const userSubscriptionAddValidator = [ body('uri').custom(isValidActorHandle).withMessage('Should have a valid URI to follow (username@domain)'), @@ -20,11 +21,25 @@ const userSubscriptionAddValidator = [ } ] -const userSubscriptionRemoveValidator = [ +const areSubscriptionsExistValidator = [ + query('uris') + .customSanitizer(toArray) + .custom(areValidActorHandles).withMessage('Should have a valid uri array'), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking areSubscriptionsExistValidator parameters', { parameters: req.query }) + + if (areValidationErrors(req, res)) return + + return next() + } +] + +const userSubscriptionGetValidator = [ param('uri').custom(isValidActorHandle).withMessage('Should have a valid URI to unfollow'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking unfollow parameters', { parameters: req.params }) + logger.debug('Checking userSubscriptionGetValidator parameters', { parameters: req.params }) if (areValidationErrors(req, res)) return @@ -32,9 +47,9 @@ const userSubscriptionRemoveValidator = [ if (host === CONFIG.WEBSERVER.HOST) host = null const user: UserModel = res.locals.oauth.token.User - const subscription = await ActorFollowModel.loadByActorAndTargetNameAndHost(user.Account.Actor.id, name, host) + const subscription = await ActorFollowModel.loadByActorAndTargetNameAndHostForAPI(user.Account.Actor.id, name, host) - if (!subscription) { + if (!subscription || !subscription.ActorFollowing.VideoChannel) { return res .status(404) .json({ @@ -51,8 +66,7 @@ const userSubscriptionRemoveValidator = [ // --------------------------------------------------------------------------- export { + areSubscriptionsExistValidator, userSubscriptionAddValidator, - userSubscriptionRemoveValidator + userSubscriptionGetValidator } - -// ---------------------------------------------------------------------------