[Fix][UI Next][V1.0.0-Alpha] Resource authorization failed (#9092)

* fix resources auth bug

* support batch select for resource auth
This commit is contained in:
Devosend 2022-03-22 18:56:41 +08:00 committed by GitHub
parent d641c8d4ea
commit 0b2923d577
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 6 deletions

View File

@ -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

View File

@ -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