aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/controllers/api/plugins.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/controllers/api/plugins.ts')
-rw-r--r--server/controllers/api/plugins.ts38
1 files changed, 29 insertions, 9 deletions
diff --git a/server/controllers/api/plugins.ts b/server/controllers/api/plugins.ts
index 8e59f27cf..14675fdf3 100644
--- a/server/controllers/api/plugins.ts
+++ b/server/controllers/api/plugins.ts
@@ -13,13 +13,13 @@ import { PluginModel } from '../../models/server/plugin'
13import { UserRight } from '../../../shared/models/users' 13import { UserRight } from '../../../shared/models/users'
14import { 14import {
15 existingPluginValidator, 15 existingPluginValidator,
16 installPluginValidator, 16 installOrUpdatePluginValidator,
17 listPluginsValidator, 17 listPluginsValidator,
18 uninstallPluginValidator, 18 uninstallPluginValidator,
19 updatePluginSettingsValidator 19 updatePluginSettingsValidator
20} from '../../middlewares/validators/plugins' 20} from '../../middlewares/validators/plugins'
21import { PluginManager } from '../../lib/plugins/plugin-manager' 21import { PluginManager } from '../../lib/plugins/plugin-manager'
22import { InstallPlugin } from '../../../shared/models/plugins/install-plugin.model' 22import { InstallOrUpdatePlugin } from '../../../shared/models/plugins/install-plugin.model'
23import { ManagePlugin } from '../../../shared/models/plugins/manage-plugin.model' 23import { ManagePlugin } from '../../../shared/models/plugins/manage-plugin.model'
24import { logger } from '../../helpers/logger' 24import { logger } from '../../helpers/logger'
25 25
@@ -61,10 +61,17 @@ pluginRouter.put('/:npmName/settings',
61pluginRouter.post('/install', 61pluginRouter.post('/install',
62 authenticate, 62 authenticate,
63 ensureUserHasRight(UserRight.MANAGE_PLUGINS), 63 ensureUserHasRight(UserRight.MANAGE_PLUGINS),
64 installPluginValidator, 64 installOrUpdatePluginValidator,
65 asyncMiddleware(installPlugin) 65 asyncMiddleware(installPlugin)
66) 66)
67 67
68pluginRouter.post('/update',
69 authenticate,
70 ensureUserHasRight(UserRight.MANAGE_PLUGINS),
71 installOrUpdatePluginValidator,
72 asyncMiddleware(updatePlugin)
73)
74
68pluginRouter.post('/uninstall', 75pluginRouter.post('/uninstall',
69 authenticate, 76 authenticate,
70 ensureUserHasRight(UserRight.MANAGE_PLUGINS), 77 ensureUserHasRight(UserRight.MANAGE_PLUGINS),
@@ -100,18 +107,33 @@ function getPlugin (req: express.Request, res: express.Response) {
100} 107}
101 108
102async function installPlugin (req: express.Request, res: express.Response) { 109async function installPlugin (req: express.Request, res: express.Response) {
103 const body: InstallPlugin = req.body 110 const body: InstallOrUpdatePlugin = req.body
104 111
105 const fromDisk = !!body.path 112 const fromDisk = !!body.path
106 const toInstall = body.npmName || body.path 113 const toInstall = body.npmName || body.path
107 try { 114 try {
108 await PluginManager.Instance.install(toInstall, undefined, fromDisk) 115 const plugin = await PluginManager.Instance.install(toInstall, undefined, fromDisk)
116
117 return res.json(plugin.toFormattedJSON())
109 } catch (err) { 118 } catch (err) {
110 logger.warn('Cannot install plugin %s.', toInstall, { err }) 119 logger.warn('Cannot install plugin %s.', toInstall, { err })
111 return res.sendStatus(400) 120 return res.sendStatus(400)
112 } 121 }
122}
113 123
114 return res.sendStatus(204) 124async function updatePlugin (req: express.Request, res: express.Response) {
125 const body: InstallOrUpdatePlugin = req.body
126
127 const fromDisk = !!body.path
128 const toUpdate = body.npmName || body.path
129 try {
130 const plugin = await PluginManager.Instance.update(toUpdate, undefined, fromDisk)
131
132 return res.json(plugin.toFormattedJSON())
133 } catch (err) {
134 logger.warn('Cannot update plugin %s.', toUpdate, { err })
135 return res.sendStatus(400)
136 }
115} 137}
116 138
117async function uninstallPlugin (req: express.Request, res: express.Response) { 139async function uninstallPlugin (req: express.Request, res: express.Response) {
@@ -123,9 +145,7 @@ async function uninstallPlugin (req: express.Request, res: express.Response) {
123} 145}
124 146
125function getPluginRegisteredSettings (req: express.Request, res: express.Response) { 147function getPluginRegisteredSettings (req: express.Request, res: express.Response) {
126 const plugin = res.locals.plugin 148 const settings = PluginManager.Instance.getRegisteredSettings(req.params.npmName)
127
128 const settings = PluginManager.Instance.getSettings(plugin.name)
129 149
130 return res.json({ 150 return res.json({
131 settings 151 settings