You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by so...@apache.org on 2022/03/22 10:56:48 UTC
[dolphinscheduler] branch dev updated: [Fix][UI Next][V1.0.0-Alpha] Resource authorization failed (#9092)
This is an automated email from the ASF dual-hosted git repository.
songjian pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 0b2923d [Fix][UI Next][V1.0.0-Alpha] Resource authorization failed (#9092)
0b2923d is described below
commit 0b2923d57765d64e387a092a96bd8c97716c3b27
Author: Devosend <de...@gmail.com>
AuthorDate: Tue Mar 22 18:56:41 2022 +0800
[Fix][UI Next][V1.0.0-Alpha] Resource authorization failed (#9092)
* fix resources auth bug
* support batch select for resource auth
---
dolphinscheduler-ui-next/src/utils/tree-format.ts | 2 +-
.../user-manage/components/use-authorize.ts | 68 ++++++++++++++++++++--
2 files changed, 64 insertions(+), 6 deletions(-)
diff --git a/dolphinscheduler-ui-next/src/utils/tree-format.ts b/dolphinscheduler-ui-next/src/utils/tree-format.ts
index a27f04b..33e29b9 100644
--- a/dolphinscheduler-ui-next/src/utils/tree-format.ts
+++ b/dolphinscheduler-ui-next/src/utils/tree-format.ts
@@ -20,7 +20,7 @@ export function removeUselessChildren(
) {
if (!list.length) return
list.forEach((item) => {
- if (item.dirctory) item.disabled = true
+ if (item.dirctory && item.children?.length === 0) item.disabled = true
if (!item.children) return
if (item.children.length === 0) {
delete item.children
diff --git a/dolphinscheduler-ui-next/src/views/security/user-manage/components/use-authorize.ts b/dolphinscheduler-ui-next/src/views/security/user-manage/components/use-authorize.ts
index 2de6312..8c51ceb 100644
--- a/dolphinscheduler-ui-next/src/views/security/user-manage/components/use-authorize.ts
+++ b/dolphinscheduler-ui-next/src/views/security/user-manage/components/use-authorize.ts
@@ -136,7 +136,7 @@ export function useAuthorize() {
state.fileResources = fileResources
state.udfResources = udfResources
state.authorizedFileResources = fileTargets
- state.authorizedUdfResources = fileTargets
+ state.authorizedUdfResources = udfTargets
}
const onInit = (type: TAuthType, userId: number) => {
@@ -154,6 +154,36 @@ export function useAuthorize() {
}
}
+ /*
+ getParent
+ */
+ const getParent = (data2: Array<number>, nodeId2: number) => {
+ let arrRes: Array<any> = []
+ if (data2.length === 0) {
+ if (nodeId2) {
+ arrRes.unshift(data2)
+ }
+ return arrRes
+ }
+ const rev = (data: Array<any>, nodeId: number) => {
+ for (let i = 0, length = data.length; i < length; i++) {
+ const node = data[i]
+ if (node.id === nodeId) {
+ arrRes.unshift(node)
+ rev(data2, node.pid)
+ break
+ } else {
+ if (node.children) {
+ rev(node.children, nodeId)
+ }
+ }
+ }
+ return arrRes
+ }
+ arrRes = rev(data2, nodeId2)
+ return arrRes
+ }
+
const onSave = async (type: TAuthType, userId: number) => {
if (state.saving) return false
state.saving = true
@@ -176,12 +206,40 @@ export function useAuthorize() {
})
}
if (type === 'authorize_resource') {
+ let fullPathFileId = []
+ const pathFileId: Array<string> = []
+ state.authorizedFileResources.forEach((v: number) => {
+ state.fileResources.forEach((v1: any) => {
+ const arr = []
+ arr[0] = v1
+ if (getParent(arr, v).length > 0) {
+ fullPathFileId = getParent(arr, v).map((v2: any) => {
+ return v2.id
+ })
+ pathFileId.push(fullPathFileId.join('-'))
+ }
+ })
+ })
+
+ let fullPathUdfId = []
+ const pathUdfId: Array<string> = []
+ state.authorizedUdfResources.forEach((v: number) => {
+ state.udfResources.forEach((v1: any) => {
+ const arr = []
+ arr[0] = v1
+ if (getParent(arr, v).length > 0) {
+ fullPathUdfId = getParent(arr, v).map((v2: any) => {
+ return v2.id
+ })
+ pathUdfId.push(fullPathUdfId.join('-'))
+ }
+ })
+ })
+
+ const allPathId = pathFileId.concat(pathUdfId)
await grantResource({
userId,
- resourceIds:
- state.resourceType === 'file'
- ? state.authorizedFileResources.join(',')
- : state.authorizedUdfResources.join(',')
+ resourceIds: allPathId.join(',')
})
}
state.saving = false