[halo-dev/halo]用户仅拥有插件查看权限时,对于有setting的插件会导致无法加载插件扩展tab

2024-02-20 523 views
0
是什么版本出现了此问题?

2.10.0

使用的什么数据库?

H2

使用的哪种方式运行?

Source Code

发生了什么?
  1. 使用如下测试版 s3 插件 plugin-s3-1.5.0-SNAPSHOT.jar.zip https://github.com/longjuan/halo-plugin-s3os/tree/aaa
  2. 创建一个用户,仅赋予 S3 Link 权限(依赖于插件查看和附件管理权限)
  3. 登录这个新用户,打开 s3 插件详情
  4. 发现 关联S3文件 功能不能正常出现 image

希望能在没有插件管理权限的时候也能显示扩展tab。

附加信息

通过分析代码发现: s3 插件有 setting,55行的 getTabsFromExtensions 不执行。 而用户没有插件管理权限,因此 fetchPluginSetting 请求不执行,也就不能执行 success 的 getTabsFromExtensions。 https://github.com/halo-dev/halo/blob/493c599eaa13270e69cb8ddc46c6a9534f94f745/console/src/modules/system/plugins/PluginDetail.vue#L44-L95

回答

8

可以去掉这个判断:https://github.com/halo-dev/halo/blob/493c599eaa13270e69cb8ddc46c6a9534f94f745/console/src/modules/system/plugins/PluginDetail.vue#L54

此外,根据在 https://github.com/halo-dev/plugin-s3/issues/82#issuecomment-1751731262 中的讨论,S3 关联的这个功能如果需要除了插件管理权限外的权限控制,放在插件的详情页面可能不太适合。

https://github.com/halo-dev/plugin-s3/issues/82#issuecomment-1751903968 中所说,放在外面可能更好。之前放在插件详情中是考虑到这个功能可能不是特别常用,放在菜单栏可能会比较占用空间。

我这里提供一个新的改进建议:让菜单栏支持子菜单,然后 Console 核心提供一个工具的菜单项,这样的话,如果插件需要提供一些工具页面,那么可以直接将菜单统一的放在这个工具菜单项下面。

如图:

图片