diff options
Diffstat (limited to 'server/middlewares/validators/users.ts')
-rw-r--r-- | server/middlewares/validators/users.ts | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/server/middlewares/validators/users.ts b/server/middlewares/validators/users.ts index 33b31d54b..7a6b2ce57 100644 --- a/server/middlewares/validators/users.ts +++ b/server/middlewares/validators/users.ts | |||
@@ -3,7 +3,7 @@ import { body, param, query } from 'express-validator' | |||
3 | import { omit } from 'lodash' | 3 | import { omit } from 'lodash' |
4 | import { Hooks } from '@server/lib/plugins/hooks' | 4 | import { Hooks } from '@server/lib/plugins/hooks' |
5 | import { MUserDefault } from '@server/types/models' | 5 | import { MUserDefault } from '@server/types/models' |
6 | import { HttpStatusCode, UserRegister, UserRole } from '@shared/models' | 6 | import { HttpStatusCode, UserRegister, UserRight, UserRole } from '@shared/models' |
7 | import { isBooleanValid, isIdValid, toBooleanOrNull, toIntOrNull } from '../../helpers/custom-validators/misc' | 7 | import { isBooleanValid, isIdValid, toBooleanOrNull, toIntOrNull } from '../../helpers/custom-validators/misc' |
8 | import { isThemeNameValid } from '../../helpers/custom-validators/plugins' | 8 | import { isThemeNameValid } from '../../helpers/custom-validators/plugins' |
9 | import { | 9 | import { |
@@ -490,14 +490,17 @@ const ensureAuthUserOwnsAccountValidator = [ | |||
490 | } | 490 | } |
491 | ] | 491 | ] |
492 | 492 | ||
493 | const ensureAuthUserOwnsChannelValidator = [ | 493 | const ensureCanManageChannel = [ |
494 | (req: express.Request, res: express.Response, next: express.NextFunction) => { | 494 | (req: express.Request, res: express.Response, next: express.NextFunction) => { |
495 | const user = res.locals.oauth.token.User | 495 | const user = res.locals.oauth.token.user |
496 | const isUserOwner = res.locals.videoChannel.Account.userId === user.id | ||
497 | |||
498 | if (!isUserOwner && user.hasRight(UserRight.MANAGE_ANY_VIDEO_CHANNEL) === false) { | ||
499 | const message = `User ${user.username} does not have right to manage channel ${req.params.nameWithHost}.` | ||
496 | 500 | ||
497 | if (res.locals.videoChannel.Account.userId !== user.id) { | ||
498 | return res.fail({ | 501 | return res.fail({ |
499 | status: HttpStatusCode.FORBIDDEN_403, | 502 | status: HttpStatusCode.FORBIDDEN_403, |
500 | message: 'Only owner of this video channel can access this ressource' | 503 | message |
501 | }) | 504 | }) |
502 | } | 505 | } |
503 | 506 | ||
@@ -542,8 +545,8 @@ export { | |||
542 | usersVerifyEmailValidator, | 545 | usersVerifyEmailValidator, |
543 | userAutocompleteValidator, | 546 | userAutocompleteValidator, |
544 | ensureAuthUserOwnsAccountValidator, | 547 | ensureAuthUserOwnsAccountValidator, |
545 | ensureAuthUserOwnsChannelValidator, | 548 | ensureCanManageUser, |
546 | ensureCanManageUser | 549 | ensureCanManageChannel |
547 | } | 550 | } |
548 | 551 | ||
549 | // --------------------------------------------------------------------------- | 552 | // --------------------------------------------------------------------------- |