X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fplugins.ts;h=f88a1632d7b3d5903be581a7d7f9ffc93da21c21;hb=b84d4c809f0b1c4b3f2029f56b81dbca37364f36;hp=1fc49b646fb2f2ea16e71d567a75259e2a651530;hpb=5e2b2e2775421cd98286d6e2f75cf38aae7a212c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/plugins.ts b/server/controllers/plugins.ts index 1fc49b646..f88a1632d 100644 --- a/server/controllers/plugins.ts +++ b/server/controllers/plugins.ts @@ -2,11 +2,12 @@ import * as express from 'express' import { PLUGIN_GLOBAL_CSS_PATH } from '../initializers/constants' import { join } from 'path' import { PluginManager, RegisteredPlugin } from '../lib/plugins/plugin-manager' -import { getPluginValidator, pluginStaticDirectoryValidator } from '../middlewares/validators/plugins' +import { getPluginValidator, pluginStaticDirectoryValidator, getExternalAuthValidator } from '../middlewares/validators/plugins' import { serveThemeCSSValidator } from '../middlewares/validators/themes' import { PluginType } from '../../shared/models/plugins/plugin.type' import { isTestInstance } from '../helpers/core-utils' import { getCompleteLocale, is18nLocale } from '../../shared/models/i18n' +import { logger } from '@server/helpers/logger' const sendFileOptions = { maxAge: '30 days', @@ -23,6 +24,12 @@ pluginsRouter.get('/plugins/translations/:locale.json', getPluginTranslations ) +pluginsRouter.get('/plugins/:pluginName/:pluginVersion/auth/:authName', + getPluginValidator(PluginType.PLUGIN), + getExternalAuthValidator, + handleAuthInPlugin +) + pluginsRouter.get('/plugins/:pluginName/:pluginVersion/static/:staticEndpoint(*)', getPluginValidator(PluginType.PLUGIN), pluginStaticDirectoryValidator, @@ -134,3 +141,14 @@ function serveThemeCSSDirectory (req: express.Request, res: express.Response) { return res.sendFile(join(plugin.path, staticEndpoint), sendFileOptions) } + +function handleAuthInPlugin (req: express.Request, res: express.Response) { + const authOptions = res.locals.externalAuth + + try { + logger.debug('Forwarding auth plugin request in %s of plugin %s.', authOptions.authName, res.locals.registeredPlugin.npmName) + authOptions.onAuthRequest(req, res) + } catch (err) { + logger.error('Forward request error in auth %s of plugin %s.', authOptions.authName, res.locals.registeredPlugin.npmName, { err }) + } +}