feat(plugins): plugin pages, per-user config, capabilities gate, mobile/telegram refactors

- Plugin HTTP routes + web pages (plugin-page-host, plugin-catalog, plugin-detail)
- Plugin access grants + per-user config (DB tables + API + frontend forms)
- Capabilities-based guard (caps.rs) replacing role-id checks
- Mobile connector: message routing, payload types, router refactor
- Telegram bot: auth flow, event handling improvements
- Honcho plugin: substantial rework
- Sidebar: plugin pages integration, role-driven visibility
- i18n: new strings for plugins, connectors, capabilities
- Remove unused mascot asset
This commit is contained in:
2026-07-19 20:47:09 +01:00
parent f85876350e
commit ba911ae8cb
50 changed files with 3186 additions and 305 deletions
+6 -1
View File
@@ -3,6 +3,7 @@ pub mod auth;
pub mod commands;
pub mod config;
pub mod approval;
pub mod caps;
pub mod cron;
pub mod dev;
pub mod file_watch;
@@ -170,9 +171,13 @@ pub fn router() -> Router<Arc<Skald>> {
// Config properties
.route("/config", get(config::list_properties))
.route("/config/{key}", put(config::set_property))
// Plugins
// Plugins — admin: manage + access grants; user: own view + own config
.route("/plugins", get(plugins::list))
.route("/plugins/mine", get(plugins::mine))
.route("/plugins/pages", get(plugins::pages))
.route("/plugins/{id}", put(plugins::update))
.route("/plugins/{id}/access", get(plugins::get_access).put(plugins::set_access))
.route("/plugins/{id}/my-config", put(plugins::update_my_config))
// Roles
.route("/roles", get(roles::list).post(roles::create))
.route("/roles/{id}", put(roles::update).delete(roles::delete))