32 lines
983 B
TypeScript
32 lines
983 B
TypeScript
import { UserRight } from '@peertube/peertube-models'
|
|
import express from 'express'
|
|
import { param } from 'express-validator'
|
|
import { areValidationErrors, checkCanManageAccount, doesAccountHandleExist } from './shared/index.js'
|
|
|
|
export const accountHandleGetValidatorFactory = (options: {
|
|
checkCanManage: boolean
|
|
checkIsLocal: boolean
|
|
}) => {
|
|
const { checkCanManage, checkIsLocal } = options
|
|
|
|
return [
|
|
param('handle')
|
|
.exists(),
|
|
|
|
async (req: express.Request, res: express.Response, next: express.NextFunction) => {
|
|
if (areValidationErrors(req, res)) return
|
|
if (!await doesAccountHandleExist({ handle: req.params.handle, req, res, checkIsLocal, checkCanManage })) return
|
|
|
|
if (checkCanManage) {
|
|
const user = res.locals.oauth.token.User
|
|
|
|
if (!checkCanManageAccount({ account: res.locals.account, user, req, res, specialRight: UserRight.MANAGE_USERS })) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return next()
|
|
}
|
|
]
|
|
}
|