X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fwebfinger.ts;h=8893a0c7e89d7ec1b68a464c1ba3cacfe8d0001d;hb=7e0f50d6e0c7dc583d40e196c283eb20dc386ae6;hp=34e62c66dc6a5cfb0d7851891b8d8e0a40c05a4e;hpb=a2431b7dcbc72c05101dcdbe631ff84a823aeb51;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/webfinger.ts b/server/middlewares/validators/webfinger.ts index 34e62c66d..8893a0c7e 100644 --- a/server/middlewares/validators/webfinger.ts +++ b/server/middlewares/validators/webfinger.ts @@ -1,12 +1,14 @@ -import * as express from 'express' -import { query } from 'express-validator/check' -import { isWebfingerResourceValid } from '../../helpers/custom-validators/webfinger' +import express from 'express' +import { query } from 'express-validator' +import { HttpStatusCode } from '../../../shared/models/http/http-error-codes' +import { isWebfingerLocalResourceValid } from '../../helpers/custom-validators/webfinger' +import { getHostWithPort } from '../../helpers/express-utils' import { logger } from '../../helpers/logger' -import { database as db } from '../../initializers' -import { areValidationErrors } from './utils' +import { ActorModel } from '../../models/actor/actor' +import { areValidationErrors } from './shared' const webfingerValidator = [ - query('resource').custom(isWebfingerResourceValid).withMessage('Should have a valid webfinger resource'), + query('resource').custom(isWebfingerLocalResourceValid).withMessage('Should have a valid webfinger resource'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking webfinger parameters', { parameters: req.query }) @@ -14,17 +16,18 @@ const webfingerValidator = [ if (areValidationErrors(req, res)) return // Remove 'acct:' from the beginning of the string - const nameWithHost = req.query.resource.substr(5) + const nameWithHost = getHostWithPort(req.query.resource.substr(5)) const [ name ] = nameWithHost.split('@') - const account = await db.Account.loadLocalByName(name) - if (!account) { - return res.status(404) - .send({ error: 'Account not found' }) - .end() + const actor = await ActorModel.loadLocalUrlByName(name) + if (!actor) { + return res.fail({ + status: HttpStatusCode.NOT_FOUND_404, + message: 'Actor not found' + }) } - res.locals.account = account + res.locals.actorUrl = actor return next() } ]