diff --git a/backend/src/main/resources/db/migration/V5__auth.sql b/backend/src/main/resources/db/migration/V5__auth.sql index d5b0435d2a..9011191782 100644 --- a/backend/src/main/resources/db/migration/V5__auth.sql +++ b/backend/src/main/resources/db/migration/V5__auth.sql @@ -401,7 +401,7 @@ SELECT sys_auth.auth_source having sum( sys_auth_detail.privilege_value )> 0) temp; - select GROUP_CONCAT(id) into oTempAllIds from v_auth_model where v_auth_model.model_type=modelType and FIND_IN_SET(v_auth_model.id,GET_V_AUTH_MODEL_WITH_PARENT ( oTempLeafIds ,modelType)); + select GROUP_CONCAT(id) into oTempAllIds from (select GET_V_AUTH_MODEL_WITH_PARENT ( oTempLeafIds ,modelType) cids) t, v_auth_model where v_auth_model.model_type=modelType and FIND_IN_SET(v_auth_model.id,cids); RETURN oTempAllIds; END diff --git a/frontend/src/utils/permission.js b/frontend/src/utils/permission.js index 54be75573a..faffd0c727 100644 --- a/frontend/src/utils/permission.js +++ b/frontend/src/utils/permission.js @@ -7,3 +7,11 @@ export function checkPermission(pers) { }) return hasPermission } + +export function hasDataPermission(pTarget, pSource) { + debugger + if (pSource && pTarget) { + return pSource.indexOf(pTarget) > -1 + } + return false +} diff --git a/frontend/src/views/system/datasource/index.vue b/frontend/src/views/system/datasource/index.vue index a756d12b1a..f3c0b77c96 100644 --- a/frontend/src/views/system/datasource/index.vue +++ b/frontend/src/views/system/datasource/index.vue @@ -92,7 +92,7 @@ import LayoutContent from '@/components/business/LayoutContent' import ComplexTable from '@/components/business/complex-table' -import { checkPermission } from '@/utils/permission' +import { checkPermission, hasDataPermission } from '@/utils/permission' import { formatCondition } from '@/utils/index' import { dsGrid, addDs, editDs, delDs, validateDs } from '@/api/system/datasource' @@ -124,10 +124,16 @@ export default { buttons: [ { label: this.$t('commons.edit'), icon: 'el-icon-edit', type: 'primary', click: this.edit, - show: checkPermission(['datasource:edit']) + show: true, + disabled: (row) => { + return !hasDataPermission('manage', row.privileges) + } }, { label: this.$t('commons.delete'), icon: 'el-icon-delete', type: 'danger', click: this._handleDelete, - show: checkPermission(['datasource:del']) + show: true, + disabled: (row) => { + return !hasDataPermission('manage', row.privileges) + } } ], searchConfig: {