feat: System setting permission

This commit is contained in:
zhangzhanwei 2025-06-27 15:10:40 +08:00 committed by zhanweizhang7
parent 644247b1cb
commit 62cb3704cf
15 changed files with 144 additions and 19 deletions

View File

@ -1179,7 +1179,10 @@ class PermissionConstants(Enum):
group=Group.OPERATION_LOG, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.OPERATION_LOG]
)
OPERATION_LOG_EXPORT = Permission(
group=Group.OPERATION_LOG, operate=Operate.EXPORT, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.OPERATION_LOG]
)
def get_workspace_application_permission(self):
return lambda r, kwargs: Permission(group=self.value.group, operate=self.value.operate,
resource_path=

View File

@ -99,6 +99,7 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'workspace',
},
component: () => import('@/views/system-resource-management/KnowledgeResourceIndex.vue'),
},
@ -110,6 +111,7 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'workspace',
},
component: () => import('@/views/system-resource-management/ToolResourceIndex.vue'),
},
@ -222,7 +224,6 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'chat',
permission: [
new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
@ -241,6 +242,7 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'SystemChat',
permission: [
new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
@ -260,6 +262,7 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'SystemChat',
permission: [
new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
@ -279,6 +282,7 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'SystemChat',
permission: [
new ComplexPermission(
[RoleConst.ADMIN],
@ -313,7 +317,15 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
sameRoute: 'setting',
permission: [
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.APPEARANCE_SETTINGS_READ],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
],
},
component: () => import('@/views/system-setting/theme/index.vue'),
},
@ -325,7 +337,15 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
sameRoute: 'setting',
permission: [
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.LOGIN_AUTH_READ],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
],
},
component: () => import('@/views/system-setting/authentication/index.vue'),
},
@ -337,6 +357,15 @@ const systemRouter = {
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
sameRoute: 'setting',
permission: [
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.EMAIL_SETTING_READ],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
],
},
component: () => import('@/views/system-setting/email/index.vue'),
},
@ -353,7 +382,14 @@ const systemRouter = {
parentPath: '/system',
parentName: 'system',
sameRoute: 'operate',
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
permission: [
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.OPERATION_LOG_READ],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
],
},
component: () => import('@/views/system/operate-log/index.vue'),
},

View File

@ -186,8 +186,6 @@ const PermissionConst = {
SHARED_KNOWLEDGE_PROBLEM_EDIT:new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ+EDIT'),
SHARED_KNOWLEDGE_PROBLEM_DELETE:new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ+DELETE'),
TOOL_CREATE:new Permission('TOOL:READ+CREATE'),
TOOL_EDIT:new Permission('TOOL:READ+EDIT'),
TOOL_READ:new Permission('TOOL:READ'),
@ -204,9 +202,17 @@ const PermissionConst = {
RESOURCE_TOOL_IMPORT:new Permission('SYSTEM_RES_TOOL:READ+IMPORT'),
RESOURCE_TOOL_EXPORT:new Permission('SYSTEM_RES_TOOL:READ+EXPORT'),
APPEARANCE_SETTINGS_READ:new Permission('APPEARANCE_SETTINGS:READ'),
APPEARANCE_SETTINGS_EDIT:new Permission('APPEARANCE_SETTINGS:READ+EDIT'),
LOGIN_AUTH_READ:new Permission('LOGIN_AUTH:READ'),
LOGIN_AUTH_EDIT:new Permission('LOGIN_AUTH:READ+EDIT'),
EMAIL_SETTING_READ:new Permission('EMAIL_SETTING:READ'),
EMAIL_SETTING_EDIT:new Permission('EMAIL_SETTING:READ+EDIT'),
OPERATION_LOG_READ:new Permission('OPERATION_LOG:READ'),
OPERATION_LOG_EXPORT:new Permission('OPERATION_LOG:READ+EXPORT'),
ABOUT_READ:new Permission('OTHER:READ'),

View File

@ -48,7 +48,7 @@
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.USER_GROUP_REMOVE_MEMBER],
[PermissionConst.CHAT_USER_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}

View File

@ -69,7 +69,13 @@
<el-button @click="submit(authFormRef, 'test')" :disabled="loading">
{{ $t('views.system.test') }}</el-button
>
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.CHAT_USER_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -83,6 +89,8 @@ import authApi from '@/api/chat-user/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -90,7 +90,13 @@
</el-form>
<div class="text-right">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.CHAT_USER_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -104,6 +110,8 @@ import authApi from '@/api/chat-user/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -87,7 +87,13 @@
</el-form>
<div class="text-right">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.CHAT_USER_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -101,6 +107,8 @@ import authApi from '@/api/chat-user/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -44,7 +44,13 @@
</el-form>
<div class="text-right">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.LOGIN_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -58,6 +64,8 @@ import authApi from '@/api/system-settings/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -69,7 +69,13 @@
<el-button @click="submit(authFormRef, 'test')" :disabled="loading">
{{ $t('views.system.test') }}</el-button
>
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.LOGIN_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -83,6 +89,8 @@ import authApi from '@/api/system-settings/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -90,7 +90,13 @@
</el-form>
<div class="text-right">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.LOGIN_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -104,6 +110,8 @@ import authApi from '@/api/system-settings/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -87,7 +87,13 @@
</el-form>
<div class="text-right">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(authFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.LOGIN_AUTH_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
</div>
@ -101,6 +107,8 @@ import authApi from '@/api/system-settings/auth-setting'
import type { FormInstance, FormRules } from 'element-plus'
import { t } from '@/locales'
import { MsgSuccess } from '@/utils/message'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
id: '',

View File

@ -13,7 +13,12 @@
</div>
<div>
<el-button type="primary" v-if="!item.isValid" @click="showDialog(item)"
>{{ $t('views.system.authentication.scanTheQRCode.access') }}
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.LOGIN_AUTH_EDIT],
[],'OR',)"
>{{ $t('views.system.authentication.scanTheQRCode.access') }}
</el-button>
<span v-if="item.isValid">
<span class="mr-4">{{
@ -92,6 +97,8 @@ import EditModel from './EditModal.vue'
import platformApi from '@/api/system-settings/platform-source'
import { MsgError, MsgSuccess } from '@/utils/message'
import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
interface PlatformConfig {
[key: string]: string

View File

@ -22,6 +22,7 @@ import OAuth2 from './component/OAuth2.vue'
import { t } from '@/locales'
import useStore from '@/stores'
const { user } = useStore()
const router = useRouter()

View File

@ -52,7 +52,13 @@
>{{ $t('views.system.email.enableTLS') }}
</el-checkbox>
</el-form-item>
<el-button @click="submit(emailFormRef)" type="primary" :disabled="loading">
<el-button @click="submit(emailFormRef)" type="primary" :disabled="loading"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.EMAIL_SETTING_EDIT],
[],'OR',)"
>
{{ $t('common.save') }}
</el-button>
<el-button @click="submit(emailFormRef, 'test')" :disabled="loading">
@ -71,6 +77,8 @@ import type { FormInstance, FormRules } from 'element-plus'
import { MsgSuccess } from '@/utils/message'
import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const form = ref<any>({
email_host: '',

View File

@ -244,7 +244,13 @@
</el-scrollbar>
<div class="theme-setting__operate w-full p-16-24">
<el-button @click="resetTheme">{{ $t('theme.abandonUpdate') }}</el-button>
<el-button type="primary" @click="updateTheme(themeFormRef)">
<el-button type="primary" @click="updateTheme(themeFormRef)"
v-hasPermission="
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.APPEARANCE_SETTINGS_EDIT],
[],'OR',)"
>
{{ $t('theme.saveAndApply') }}
</el-button>
</div>
@ -262,6 +268,8 @@ import ThemeApi from '@/api/system-settings/theme'
import { MsgSuccess, MsgError } from '@/utils/message'
import useStore from '@/stores'
import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { ComplexPermission } from '@/utils/permission/type'
const { theme } = useStore()
const router = useRouter()