feat(dashboard): scoped path-token auth for plugin views and complete… · AstrBotDevs/AstrBot@8831d95 · GitHub
Skip to content

Commit 8831d95

Browse files
authored
feat(dashboard): scoped path-token auth for plugin views and complete the views rename (#10415)
* refactor(dashboard): complete the plugin pages to views rename Finish the remaining Pages -> Views rename on the dashboard: - Fix the plugin card "Open View" button crash by pointing openPluginWebui at the renamed PluginView route - Rename PluginPagePage.vue to PluginViewPage.vue and update its internals (loadPluginView, pluginViewTitle, .plugin-view-* classes) - Rename openPluginWebui -> openPluginView and the open-webui emit to open-view; pluginPageTitle/Description -> pluginViewTitle/Description; isPluginPageRoute -> isPluginViewRoute - Rename i18n keys (pluginWebui -> pluginView, openWebui -> openView, pluginPageType -> pluginViewType, messages) across en/zh/ja/ru locales The postMessage bridge channel name (astrbot-plugin-page) is kept unchanged because it is part of the wire protocol shared with plugin_page_bridge.js. * feat(dashboard): authenticate plugin view assets with scoped path tokens Serve plugin view assets from /api/v1/plugins/{id}/views/{page}/_t/{token}/... so the scoped token travels in the URL path. Relative URLs inside the view then inherit the token through normal path resolution, which removes the need for server-side HTML/CSS/JS URL rewriting on this route. - Add the _t routes with a require_plugin_view_token dependency (v1 paths bypass the dashboard auth middleware) - Extend the plugin page asset token to a session-length TTL (7 days, aligned with the dashboard session) with a page_session purpose claim, still scoped to a single plugin and page - Serialize the view entry content_path as the _t URL, keeping the asset_token query for plugins that parse location.search - Keep the legacy /api/plugin/page/content/...?asset_token= form working during the transition - Rename the OpenAPI tag Plugin Pages -> Plugin Views, document the new route, regenerate the frontend API client, and update the zh/en plugin-pages docs * refactor(dashboard): remove the legacy plugin page content route and URL rewriting The path-token view route makes the compatibility surface unnecessary: - Drop /api/plugin/page/content/... (query asset_token form) - Drop the redundant authenticated asset routes /plugins/page/assets, /plugins/view/assets, and /plugins/{id}/(pages|views)/{page}/assets/... which had no callers outside the generated client - Remove the HTML/CSS/JS URL rewriting helpers; view assets are always served raw and only HTML gets bridge SDK injection plus theme handling - Slim PluginPageAuth down to the bridge SDK endpoint, the only non-v1 path still authenticating scoped query tokens - serialize_plugin_page no longer falls back to the legacy content path - Update the plugin-pages docs (zh/en) and the OpenAPI spec, and regenerate the frontend API client * refactor(dashboard): drop legacy plugin page API aliases Remove the page-named plugin view API aliases now that the views rename is complete and legacy compatibility is intentionally dropped: - DELETE /api/v1/plugins/page(s) and /plugins/{plugin_id}/pages{,/{page_name}} aliases; /plugins/view(s) and /plugins/{plugin_id}/views{,/{page_name}} are the only entry config routes - Remove the unused /api/v1/plugins/page-bridge-sdk.js route; the live bridge SDK stays at /api/plugin/page/bridge-sdk.js - Dashboard calls the view-named endpoints; regenerate the API client and the OpenAPI scopes docs * refactor(dashboard): keep plugin page APIs as deprecated view aliases Restore the page-named plugin view routes removed in the previous commit and keep them for a transition period, with view as the canonical API: - /plugins/page(s) and /plugins/{plugin_id}/pages{,/{page_name}} serve as aliases of the corresponding /views routes (same handlers) - The OpenAPI spec marks the page operations deprecated and points new clients at the view routes; the v1 page-bridge-sdk.js route is restored - The dashboard keeps calling the view endpoints by default * refactor(dashboard): rename the plugin view path parameter to view_name The view entry and path-token asset routes now use {view_name} instead of {page_name} in the OpenAPI-visible path, and the service layer renames its internal page_name variables to match. Wire-compatible surfaces stay unchanged: the page_name JWT claim, the pageName JSON field, query parameters, and the deprecated /pages aliases. Error messages and the plugin view docs (zh/en) complete the Page to View rename.
1 parent 2de9059 commit 8831d95

30 files changed

Lines changed: 672 additions & 1240 deletions

File tree

‎astrbot/dashboard/api/plugins.py‎

Lines changed: 80 additions & 107 deletions
Lines changed: 11 additions & 45 deletions

0 commit comments

Comments
 (0)