From 4648f08f986f327d3ffed7847934f60c1609a938 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Wed, 22 Oct 2025 14:11:55 +0800 Subject: [PATCH] feat: About permission --- apps/common/constants/permission_constants.py | 8 +++++++- apps/locales/en_US/LC_MESSAGES/django.po | 3 +++ apps/locales/zh_CN/LC_MESSAGES/django.po | 3 +++ apps/locales/zh_Hant/LC_MESSAGES/django.po | 3 +++ ui/src/layout/layout-header/avatar/AboutDialog.vue | 7 ++++++- ui/src/utils/permission/data.ts | 1 + 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/apps/common/constants/permission_constants.py b/apps/common/constants/permission_constants.py index 278401116..578a6053a 100644 --- a/apps/common/constants/permission_constants.py +++ b/apps/common/constants/permission_constants.py @@ -178,6 +178,7 @@ class Operate(Enum): AUTH = "READ+AUTH" # 资源授权 TAG = "READ+TAG" # 标签设置 REPLACE = "READ+REPLACE" # 标签设置 + UPDATE = "READ+UPDATE" # 更新license class RoleGroup(Enum): @@ -1014,9 +1015,14 @@ class PermissionConstants(Enum): ) ABOUT_READ = Permission(group=Group.OTHER, operate=Operate.READ, + role_list=[RoleConstants.ADMIN, RoleConstants.USER], + parent_group=[SystemGroup.OTHER, WorkspaceGroup.OTHER, UserGroup.OTHER], + label=_('About') + ) + ABOUT_UPDATE = Permission(group=Group.OTHER, operate=Operate.UPDATE, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.OTHER], - label=_('About') + label=_('Update License') ) SWITCH_LANGUAGE = Permission(group=Group.OTHER, operate=Operate.EDIT, role_list=[RoleConstants.ADMIN, RoleConstants.USER], diff --git a/apps/locales/en_US/LC_MESSAGES/django.po b/apps/locales/en_US/LC_MESSAGES/django.po index d4e3ba7b9..7be711932 100644 --- a/apps/locales/en_US/LC_MESSAGES/django.po +++ b/apps/locales/en_US/LC_MESSAGES/django.po @@ -8742,4 +8742,7 @@ msgid "Download Original Document" msgstr "" msgid "Replace Original Document" +msgstr "" + +msgid "Update License" msgstr "" \ No newline at end of file diff --git a/apps/locales/zh_CN/LC_MESSAGES/django.po b/apps/locales/zh_CN/LC_MESSAGES/django.po index 99de44746..0f6c1b9a2 100644 --- a/apps/locales/zh_CN/LC_MESSAGES/django.po +++ b/apps/locales/zh_CN/LC_MESSAGES/django.po @@ -8869,3 +8869,6 @@ msgstr "下载原文档" msgid "Replace Original Document" msgstr "替换原文档" + +msgid "Update License" +msgstr "更新许可证" \ No newline at end of file diff --git a/apps/locales/zh_Hant/LC_MESSAGES/django.po b/apps/locales/zh_Hant/LC_MESSAGES/django.po index 042b934e4..69fc109de 100644 --- a/apps/locales/zh_Hant/LC_MESSAGES/django.po +++ b/apps/locales/zh_Hant/LC_MESSAGES/django.po @@ -8869,3 +8869,6 @@ msgstr "下載原文件" msgid "Replace Original Document" msgstr "替換原文件" + +msgid "Update License" +msgstr "更新許可證" diff --git a/ui/src/layout/layout-header/avatar/AboutDialog.vue b/ui/src/layout/layout-header/avatar/AboutDialog.vue index ebcbdef61..cd741f452 100644 --- a/ui/src/layout/layout-header/avatar/AboutDialog.vue +++ b/ui/src/layout/layout-header/avatar/AboutDialog.vue @@ -49,7 +49,10 @@ :auto-upload="false" :show-file-list="false" :on-change="onChange" - v-hasPermission="new Role('ADMIN')" + v-if="hasPermission([ + RoleConst.ADMIN, + PermissionConst.ABOUT_UPDATE + ],'OR')" > {{ $t('layout.about.update') }} License @@ -70,6 +73,8 @@ import {fromNowDate} from '@/utils/time' import {Role} from '@/utils/permission/type' import useStore from '@/stores' import { t } from '@/locales' +import { hasPermission } from '@/utils/permission' +import { PermissionConst, RoleConst } from '@/utils/permission/data' const {user, theme} = useStore() const isDefaultTheme = computed(() => { return theme.isDefaultTheme() diff --git a/ui/src/utils/permission/data.ts b/ui/src/utils/permission/data.ts index 16635f9d9..5f302e506 100644 --- a/ui/src/utils/permission/data.ts +++ b/ui/src/utils/permission/data.ts @@ -320,6 +320,7 @@ const PermissionConst = { OPERATION_LOG_CLEAR_POLICY: new Permission('OPERATION_LOG:READ+CLEAR_POLICY'), ABOUT_READ: new Permission('OTHER:READ'), + ABOUT_UPDATE: new Permission('OTHER:READ+UPDATE'), SWITCH_LANGUAGE: new Permission('OTHER:READ+EDIT'), CHANGE_PASSWORD: new Permission('OTHER:READ+CREATE'), SYSTEM_API_KEY_EDIT: new Permission('OTHER:READ+DELETE'),