From 59ef0220b50772e2405eb9e30f74631242c91226 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Fri, 26 Jun 2026 15:01:14 -0400 Subject: [PATCH] Add web UI to enable/disable plugins GET /api/plugins now lists all discovered plugins (enabled or not) with status; PUT /api/plugins/ toggles enabled (persists to plugins.json). New Settings > Plugins admin page with per-plugin toggles. Route changes apply on next restart. Replaces CLI-only enable/disable for self-serve admin. Co-Authored-By: Claude Opus 4.8 --- frontend/src/api/index.js | 9 ++ frontend/src/router/routes/core.js | 6 + frontend/src/views/settings/PluginsList.vue | 140 ++++++++++++++++++ frontend/src/views/settings/SettingsIndex.vue | 8 +- shopdb/core/api/plugins.py | 57 ++++--- 5 files changed, 200 insertions(+), 20 deletions(-) create mode 100644 frontend/src/views/settings/PluginsList.vue diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index b5827ab..f590a92 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -674,6 +674,15 @@ export const employeesApi = { export const businessUnitsApi = businessunitsApi // System Settings API +export const pluginsApi = { + list() { + return api.get('/plugins') + }, + setEnabled(name, enabled) { + return api.put(`/plugins/${name}`, { enabled }) + } +} + export const settingsApi = { list(params = {}) { return api.get('/settings', { params }) diff --git a/frontend/src/router/routes/core.js b/frontend/src/router/routes/core.js index 0dc4a0e..2fef2dd 100644 --- a/frontend/src/router/routes/core.js +++ b/frontend/src/router/routes/core.js @@ -92,6 +92,12 @@ export default [ component: () => import('../../views/settings/SystemSettings.vue'), meta: { requiresAuth: true, requiresAdmin: true } }, + { + path: 'settings/plugins', + name: 'plugins', + component: () => import('../../views/settings/PluginsList.vue'), + meta: { requiresAuth: true, requiresAdmin: true } + }, { path: 'settings/auditlogs', name: 'audit-logs', diff --git a/frontend/src/views/settings/PluginsList.vue b/frontend/src/views/settings/PluginsList.vue new file mode 100644 index 0000000..9ea1d25 --- /dev/null +++ b/frontend/src/views/settings/PluginsList.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/frontend/src/views/settings/SettingsIndex.vue b/frontend/src/views/settings/SettingsIndex.vue index c816beb..1068928 100644 --- a/frontend/src/views/settings/SettingsIndex.vue +++ b/frontend/src/views/settings/SettingsIndex.vue @@ -75,6 +75,12 @@

Configure integrations and system options

+ +
+

Plugins

+

Enable or disable installed plugins

+
+

Audit Logs

@@ -91,7 +97,7 @@