diff options
Diffstat (limited to 'server/middlewares')
-rw-r--r-- | server/middlewares/validators/plugins.ts | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/server/middlewares/validators/plugins.ts b/server/middlewares/validators/plugins.ts index a1634ded4..8103ec7d3 100644 --- a/server/middlewares/validators/plugins.ts +++ b/server/middlewares/validators/plugins.ts | |||
@@ -1,14 +1,15 @@ | |||
1 | import * as express from 'express' | 1 | import * as express from 'express' |
2 | import { param, query, body } from 'express-validator/check' | 2 | import { body, param, query } from 'express-validator/check' |
3 | import { logger } from '../../helpers/logger' | 3 | import { logger } from '../../helpers/logger' |
4 | import { areValidationErrors } from './utils' | 4 | import { areValidationErrors } from './utils' |
5 | import { isPluginNameValid, isPluginTypeValid, isPluginVersionValid, isNpmPluginNameValid } from '../../helpers/custom-validators/plugins' | 5 | import { isNpmPluginNameValid, isPluginNameValid, isPluginTypeValid, isPluginVersionValid } from '../../helpers/custom-validators/plugins' |
6 | import { PluginManager } from '../../lib/plugins/plugin-manager' | 6 | import { PluginManager } from '../../lib/plugins/plugin-manager' |
7 | import { isBooleanValid, isSafePath } from '../../helpers/custom-validators/misc' | 7 | import { isBooleanValid, isSafePath } from '../../helpers/custom-validators/misc' |
8 | import { PluginModel } from '../../models/server/plugin' | 8 | import { PluginModel } from '../../models/server/plugin' |
9 | import { InstallPlugin } from '../../../shared/models/plugins/install-plugin.model' | 9 | import { InstallOrUpdatePlugin } from '../../../shared/models/plugins/install-plugin.model' |
10 | import { PluginType } from '../../../shared/models/plugins/plugin.type' | ||
10 | 11 | ||
11 | const servePluginStaticDirectoryValidator = [ | 12 | const servePluginStaticDirectoryValidator = (pluginType: PluginType) => [ |
12 | param('pluginName').custom(isPluginNameValid).withMessage('Should have a valid plugin name'), | 13 | param('pluginName').custom(isPluginNameValid).withMessage('Should have a valid plugin name'), |
13 | param('pluginVersion').custom(isPluginVersionValid).withMessage('Should have a valid plugin version'), | 14 | param('pluginVersion').custom(isPluginVersionValid).withMessage('Should have a valid plugin version'), |
14 | param('staticEndpoint').custom(isSafePath).withMessage('Should have a valid static endpoint'), | 15 | param('staticEndpoint').custom(isSafePath).withMessage('Should have a valid static endpoint'), |
@@ -18,7 +19,8 @@ const servePluginStaticDirectoryValidator = [ | |||
18 | 19 | ||
19 | if (areValidationErrors(req, res)) return | 20 | if (areValidationErrors(req, res)) return |
20 | 21 | ||
21 | const plugin = PluginManager.Instance.getRegisteredPluginOrTheme(req.params.pluginName) | 22 | const npmName = PluginModel.buildNpmName(req.params.pluginName, pluginType) |
23 | const plugin = PluginManager.Instance.getRegisteredPluginOrTheme(npmName) | ||
22 | 24 | ||
23 | if (!plugin || plugin.version !== req.params.pluginVersion) { | 25 | if (!plugin || plugin.version !== req.params.pluginVersion) { |
24 | return res.sendStatus(404) | 26 | return res.sendStatus(404) |
@@ -48,7 +50,7 @@ const listPluginsValidator = [ | |||
48 | } | 50 | } |
49 | ] | 51 | ] |
50 | 52 | ||
51 | const installPluginValidator = [ | 53 | const installOrUpdatePluginValidator = [ |
52 | body('npmName') | 54 | body('npmName') |
53 | .optional() | 55 | .optional() |
54 | .custom(isNpmPluginNameValid).withMessage('Should have a valid npm name'), | 56 | .custom(isNpmPluginNameValid).withMessage('Should have a valid npm name'), |
@@ -57,11 +59,11 @@ const installPluginValidator = [ | |||
57 | .custom(isSafePath).withMessage('Should have a valid safe path'), | 59 | .custom(isSafePath).withMessage('Should have a valid safe path'), |
58 | 60 | ||
59 | (req: express.Request, res: express.Response, next: express.NextFunction) => { | 61 | (req: express.Request, res: express.Response, next: express.NextFunction) => { |
60 | logger.debug('Checking installPluginValidator parameters', { parameters: req.body }) | 62 | logger.debug('Checking installOrUpdatePluginValidator parameters', { parameters: req.body }) |
61 | 63 | ||
62 | if (areValidationErrors(req, res)) return | 64 | if (areValidationErrors(req, res)) return |
63 | 65 | ||
64 | const body: InstallPlugin = req.body | 66 | const body: InstallOrUpdatePlugin = req.body |
65 | if (!body.path && !body.npmName) { | 67 | if (!body.path && !body.npmName) { |
66 | return res.status(400) | 68 | return res.status(400) |
67 | .json({ error: 'Should have either a npmName or a path' }) | 69 | .json({ error: 'Should have either a npmName or a path' }) |
@@ -124,6 +126,6 @@ export { | |||
124 | updatePluginSettingsValidator, | 126 | updatePluginSettingsValidator, |
125 | uninstallPluginValidator, | 127 | uninstallPluginValidator, |
126 | existingPluginValidator, | 128 | existingPluginValidator, |
127 | installPluginValidator, | 129 | installOrUpdatePluginValidator, |
128 | listPluginsValidator | 130 | listPluginsValidator |
129 | } | 131 | } |