mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-06 03:50:26 +02:00
Follow works
This commit is contained in:
parent
e34c85e527
commit
350e31d6b6
39 changed files with 431 additions and 169 deletions
42
server/middlewares/validators/webfinger.ts
Normal file
42
server/middlewares/validators/webfinger.ts
Normal file
|
@ -0,0 +1,42 @@
|
|||
import { query } from 'express-validator/check'
|
||||
import * as express from 'express'
|
||||
|
||||
import { checkErrors } from './utils'
|
||||
import { logger, isWebfingerResourceValid } from '../../helpers'
|
||||
import { database as db } from '../../initializers'
|
||||
|
||||
const webfingerValidator = [
|
||||
query('resource').custom(isWebfingerResourceValid).withMessage('Should have a valid webfinger resource'),
|
||||
|
||||
(req: express.Request, res: express.Response, next: express.NextFunction) => {
|
||||
logger.debug('Checking webfinger parameters', { parameters: req.query })
|
||||
|
||||
checkErrors(req, res, () => {
|
||||
// Remove 'acct:' from the beginning of the string
|
||||
const nameWithHost = req.query.resource.substr(5)
|
||||
const [ name, ] = nameWithHost.split('@')
|
||||
|
||||
db.Account.loadLocalByName(name)
|
||||
.then(account => {
|
||||
if (!account) {
|
||||
return res.status(404)
|
||||
.send({ error: 'Account not found' })
|
||||
.end()
|
||||
}
|
||||
|
||||
res.locals.account = account
|
||||
return next()
|
||||
})
|
||||
.catch(err => {
|
||||
logger.error('Error in webfinger validator.', err)
|
||||
return res.sendStatus(500)
|
||||
})
|
||||
})
|
||||
}
|
||||
]
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export {
|
||||
webfingerValidator
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue