From 4a8d113b9b57d97ff13ad1608798eabca99643e4 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 28 Apr 2020 14:49:03 +0200 Subject: Begin support for external auths --- server/middlewares/validators/plugins.ts | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'server/middlewares/validators/plugins.ts') diff --git a/server/middlewares/validators/plugins.ts b/server/middlewares/validators/plugins.ts index 65765f473..2cb49ec43 100644 --- a/server/middlewares/validators/plugins.ts +++ b/server/middlewares/validators/plugins.ts @@ -4,7 +4,7 @@ import { logger } from '../../helpers/logger' import { areValidationErrors } from './utils' import { isNpmPluginNameValid, isPluginNameValid, isPluginTypeValid, isPluginVersionValid } from '../../helpers/custom-validators/plugins' import { PluginManager } from '../../lib/plugins/plugin-manager' -import { isBooleanValid, isSafePath, toBooleanOrNull } from '../../helpers/custom-validators/misc' +import { isBooleanValid, isSafePath, toBooleanOrNull, exists } from '../../helpers/custom-validators/misc' import { PluginModel } from '../../models/server/plugin' import { InstallOrUpdatePlugin } from '../../../shared/models/plugins/install-plugin.model' import { PluginType } from '../../../shared/models/plugins/plugin.type' @@ -40,6 +40,26 @@ const getPluginValidator = (pluginType: PluginType, withVersion = true) => { ]) } +const getExternalAuthValidator = [ + param('authName').custom(exists).withMessage('Should have a valid auth name'), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking getExternalAuthValidator parameters', { parameters: req.params }) + + if (areValidationErrors(req, res)) return + + const plugin = res.locals.registeredPlugin + if (!plugin.registerHelpersStore) return res.sendStatus(404) + + const externalAuth = plugin.registerHelpersStore.getExternalAuths().find(a => a.authName === req.params.authName) + if (!externalAuth) return res.sendStatus(404) + + res.locals.externalAuth = externalAuth + + return next() + } +] + const pluginStaticDirectoryValidator = [ param('staticEndpoint').custom(isSafePath).withMessage('Should have a valid static endpoint'), @@ -175,5 +195,6 @@ export { listAvailablePluginsValidator, existingPluginValidator, installOrUpdatePluginValidator, - listPluginsValidator + listPluginsValidator, + getExternalAuthValidator } -- cgit v1.2.3