X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fuser-subscriptions.ts;h=73da3142a96bf87d52c4d83a1d7469b59dd284f4;hb=eb7b48ce84e5872d1333edd892f2e6104a18d7f1;hp=d8c26c742d6ee9fb5809892e88aa8eed061086f7;hpb=99492dbc0d87ef54d0dab7d8d44f8d0de5722bdd;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/user-subscriptions.ts b/server/middlewares/validators/user-subscriptions.ts index d8c26c742..73da3142a 100644 --- a/server/middlewares/validators/user-subscriptions.ts +++ b/server/middlewares/validators/user-subscriptions.ts @@ -1,12 +1,24 @@ -import * as express from 'express' -import 'express-validator' -import { body, param } from 'express-validator/check' +import express from 'express' +import { body, param, query } from 'express-validator' +import { HttpStatusCode } from '../../../shared/models/http/http-error-codes' +import { areValidActorHandles, isValidActorHandle } from '../../helpers/custom-validators/activitypub/actor' +import { toArray } from '../../helpers/custom-validators/misc' 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 { UserModel } from '../../models/account/user' -import { CONFIG } from '../../initializers' +import { WEBSERVER } from '../../initializers/constants' +import { ActorFollowModel } from '../../models/actor/actor-follow' +import { areValidationErrors } from './shared' + +const userSubscriptionListValidator = [ + query('search').optional().not().isEmpty().withMessage('Should have a valid search'), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking userSubscriptionListValidator parameters', { parameters: req.query }) + + if (areValidationErrors(req, res)) return + + return next() + } +] const userSubscriptionAddValidator = [ body('uri').custom(isValidActorHandle).withMessage('Should have a valid URI to follow (username@domain)'), @@ -20,6 +32,20 @@ const userSubscriptionAddValidator = [ } ] +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'), @@ -29,18 +55,21 @@ const userSubscriptionGetValidator = [ if (areValidationErrors(req, res)) return let [ name, host ] = req.params.uri.split('@') - if (host === CONFIG.WEBSERVER.HOST) host = null + if (host === WEBSERVER.HOST) host = null - const user: UserModel = res.locals.oauth.token.User - const subscription = await ActorFollowModel.loadByActorAndTargetNameAndHost(user.Account.Actor.id, name, host) + const user = res.locals.oauth.token.User + const subscription = await ActorFollowModel.loadByActorAndTargetNameAndHostForAPI({ + actorId: user.Account.Actor.id, + targetName: name, + targetHost: host, + state: 'accepted' + }) if (!subscription || !subscription.ActorFollowing.VideoChannel) { - return res - .status(404) - .json({ - error: `Subscription ${req.params.uri} not found.` - }) - .end() + return res.fail({ + status: HttpStatusCode.NOT_FOUND_404, + message: `Subscription ${req.params.uri} not found.` + }) } res.locals.subscription = subscription @@ -51,8 +80,8 @@ const userSubscriptionGetValidator = [ // --------------------------------------------------------------------------- export { + areSubscriptionsExistValidator, + userSubscriptionListValidator, userSubscriptionAddValidator, userSubscriptionGetValidator } - -// ---------------------------------------------------------------------------