From b5f919ac8eb2a1c20e26582fdfd377d687710d8f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 12 Jul 2019 11:39:58 +0200 Subject: WIP plugins: update plugin --- server/controllers/plugins.ts | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'server/controllers/plugins.ts') diff --git a/server/controllers/plugins.ts b/server/controllers/plugins.ts index 05f03324d..f255d13e8 100644 --- a/server/controllers/plugins.ts +++ b/server/controllers/plugins.ts @@ -1,25 +1,42 @@ import * as express from 'express' import { PLUGIN_GLOBAL_CSS_PATH } from '../initializers/constants' -import { basename, join } from 'path' +import { join } from 'path' import { RegisteredPlugin } from '../lib/plugins/plugin-manager' import { servePluginStaticDirectoryValidator } from '../middlewares/validators/plugins' +import { serveThemeCSSValidator } from '../middlewares/validators/themes' +import { PluginType } from '../../shared/models/plugins/plugin.type' const pluginsRouter = express.Router() -pluginsRouter.get('/global.css', +pluginsRouter.get('/plugins/global.css', servePluginGlobalCSS ) -pluginsRouter.get('/:pluginName/:pluginVersion/static/:staticEndpoint(*)', - servePluginStaticDirectoryValidator, +pluginsRouter.get('/plugins/:pluginName/:pluginVersion/static/:staticEndpoint(*)', + servePluginStaticDirectoryValidator(PluginType.PLUGIN), servePluginStaticDirectory ) -pluginsRouter.get('/:pluginName/:pluginVersion/client-scripts/:staticEndpoint(*)', - servePluginStaticDirectoryValidator, +pluginsRouter.get('/plugins/:pluginName/:pluginVersion/client-scripts/:staticEndpoint(*)', + servePluginStaticDirectoryValidator(PluginType.PLUGIN), servePluginClientScripts ) +pluginsRouter.get('/themes/:pluginName/:pluginVersion/static/:staticEndpoint(*)', + servePluginStaticDirectoryValidator(PluginType.THEME), + servePluginStaticDirectory +) + +pluginsRouter.get('/themes/:pluginName/:pluginVersion/client-scripts/:staticEndpoint(*)', + servePluginStaticDirectoryValidator(PluginType.THEME), + servePluginClientScripts +) + +pluginsRouter.get('/themes/:themeName/:themeVersion/css/:staticEndpoint(*)', + serveThemeCSSValidator, + serveThemeCSSDirectory +) + // --------------------------------------------------------------------------- export { @@ -58,3 +75,14 @@ function servePluginClientScripts (req: express.Request, res: express.Response) return res.sendFile(join(plugin.path, staticEndpoint)) } + +function serveThemeCSSDirectory (req: express.Request, res: express.Response) { + const plugin: RegisteredPlugin = res.locals.registeredPlugin + const staticEndpoint = req.params.staticEndpoint + + if (plugin.css.includes(staticEndpoint) === false) { + return res.sendStatus(404) + } + + return res.sendFile(join(plugin.path, staticEndpoint)) +} -- cgit v1.2.3