]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/middlewares/validators/users.ts
Add admin view to manage comments
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / users.ts
index aff18be3dc985a39f4566e7ebbcd754970cbfbc8..c91c378b323cd4938843d681f7ac9e34f4377da3 100644 (file)
@@ -41,6 +41,7 @@ import { Hooks } from '@server/lib/plugins/hooks'
 const usersListValidator = [
   query('blocked')
     .optional()
+    .customSanitizer(toBooleanOrNull)
     .isBoolean().withMessage('Should be a valid boolean banned state'),
 
   (req: express.Request, res: express.Response, next: express.NextFunction) => {
@@ -56,7 +57,7 @@ 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').custom(isActorPreferredUsernameValid).withMessage('Should have a valid channel name'),
+  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')
@@ -76,20 +77,17 @@ const usersAddValidator = [
         .json({ error: 'You can only create users (and not administrators or moderators)' })
     }
 
-    if (!req.body.channelName) {
-      return res.status(400)
-        .json({ error: 'Channel name is required.' })
-    }
-
-    if (req.body.channelName === req.body.username) {
-      return res.status(400)
-        .json({ error: 'Channel name cannot be the same as user username.' })
-    }
+    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.` })
+      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()
@@ -500,7 +498,7 @@ export {
 
 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) {