import * as express from 'express'
import { param } from 'express-validator/check'
import {
- isUserDisplayNSFWValid,
- isUserPasswordValid,
- isUserRoleValid,
- isUserUsernameValid,
- isUserVideoQuotaValid,
- logger
-} from '../../helpers'
-import { isAccountNameValid } from '../../helpers/custom-validators/accounts'
-import { database as db } from '../../initializers/database'
-import { AccountInstance } from '../../models'
-import { checkErrors } from './utils'
+ isAccountIdExist,
+ isAccountNameValid,
+ isAccountNameWithHostExist,
+ isLocalAccountNameExist
+} from '../../helpers/custom-validators/accounts'
+import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc'
+import { logger } from '../../helpers/logger'
+import { areValidationErrors } from './utils'
const localAccountValidator = [
param('name').custom(isAccountNameValid).withMessage('Should have a valid account name'),
- (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ async (req: express.Request, res: express.Response, next: express.NextFunction) => {
logger.debug('Checking localAccountValidator parameters', { parameters: req.params })
- checkErrors(req, res, () => {
- checkLocalAccountExists(req.params.name, res, next)
- })
+ if (areValidationErrors(req, res)) return
+ if (!await isLocalAccountNameExist(req.params.name, res)) return
+
+ return next()
}
]
-// ---------------------------------------------------------------------------
+const accountsGetValidator = [
+ param('id').custom(isIdOrUUIDValid).withMessage('Should have a valid id'),
-export {
- localAccountValidator
-}
+ async (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ logger.debug('Checking accountsGetValidator parameters', { parameters: req.params })
+
+ if (areValidationErrors(req, res)) return
+ if (!await isAccountIdExist(req.params.id, res)) return
+
+ return next()
+ }
+]
+
+const accountsNameWithHostGetValidator = [
+ param('nameWithHost').exists().withMessage('Should have an account name with host'),
+
+ async (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ logger.debug('Checking accountsNameWithHostGetValidator parameters', { parameters: req.params })
+
+ if (areValidationErrors(req, res)) return
+ if (!await isAccountNameWithHostExist(req.params.nameWithHost, res)) return
+
+ return next()
+ }
+]
// ---------------------------------------------------------------------------
-function checkLocalAccountExists (name: string, res: express.Response, callback: (err: Error, account: AccountInstance) => void) {
- db.Account.loadLocalByName(name)
- .then(account => {
- if (!account) {
- return res.status(404)
- .send({ error: 'Account not found' })
- .end()
- }
-
- res.locals.account = account
- return callback(null, account)
- })
- .catch(err => {
- logger.error('Error in account request validator.', err)
- return res.sendStatus(500)
- })
+export {
+ localAccountValidator,
+ accountsGetValidator,
+ accountsNameWithHostGetValidator
}