import { MUserDefault } from '@server/types/models'
import { Hooks } from '@server/lib/plugins/hooks'
+const usersListValidator = [
+ query('blocked')
+ .optional()
+ .isBoolean().withMessage('Should be a valid boolean banned state'),
+
+ (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ logger.debug('Checking usersList parameters', { parameters: req.query })
+
+ if (areValidationErrors(req, res)) return
+
+ return next()
+ }
+]
+
const usersAddValidator = [
body('username').custom(isUserUsernameValid).withMessage('Should have a valid username (lowercase alphanumeric characters)'),
body('password').custom(isUserPasswordValidOrEmpty).withMessage('Should have a valid password'),
body('email').isEmail().withMessage('Should have a valid email'),
+ body('channelName').optional().custom(isActorPreferredUsernameValid).withMessage('Should have a valid channel name'),
body('videoQuota').custom(isUserVideoQuotaValid).withMessage('Should have a valid user quota'),
body('videoQuotaDaily').custom(isUserVideoQuotaDailyValid).withMessage('Should have a valid daily user quota'),
body('role')
.json({ error: 'You can only create users (and not administrators or moderators)' })
}
+ if (req.body.channelName) {
+ if (req.body.channelName === req.body.username) {
+ return res.status(400)
+ .json({ error: 'Channel name cannot be the same as user username.' })
+ }
+
+ const existing = await ActorModel.loadLocalByName(req.body.channelName)
+ if (existing) {
+ return res.status(409)
+ .json({ error: `Channel with name ${req.body.channelName} already exists.` })
+ }
+ }
+
return next()
}
]
// ---------------------------------------------------------------------------
export {
+ usersListValidator,
usersAddValidator,
deleteMeValidator,
usersRegisterValidator,
function checkUserIdExist (idArg: number | string, res: express.Response, withStats = false) {
const id = parseInt(idArg + '', 10)
- return checkUserExist(() => UserModel.loadById(id, withStats), res)
+ return checkUserExist(() => UserModel.loadByIdWithChannels(id, withStats), res)
}
function checkUserEmailExist (email: string, res: express.Response, abortResponse = true) {