diff --git a/web/app/components/header/account-setting/access-rules-page/access-rule-row.tsx b/web/app/components/header/account-setting/access-rules-page/access-rule-row.tsx
index 1f93f09177..61e984b455 100644
--- a/web/app/components/header/account-setting/access-rules-page/access-rule-row.tsx
+++ b/web/app/components/header/account-setting/access-rules-page/access-rule-row.tsx
@@ -1,10 +1,13 @@
'use client'
-import type { AccessPolicyWithBindings } from '@/models/access-control'
+import type { AccessPolicyWithBindings, BindingType } from '@/models/access-control'
import { cn } from '@langgenius/dify-ui/cn'
import { toast } from '@langgenius/dify-ui/toast'
import { memo, useCallback } from 'react'
-import { useUpdateAppAccessRuleBindings, useUpdateDatasetAccessRuleBindings } from '@/service/access-control/use-workspace-access-rules'
+import {
+ useUpdateAppAccessRuleBindings,
+ useUpdateDatasetAccessRuleBindings,
+} from '@/service/access-control/use-workspace-access-rules'
import AccessRuleRowMenu from './access-rule-row-menu'
import RoleTag from './role-tag'
@@ -23,7 +26,8 @@ const AccessRuleRow = ({
onEdit,
onAddRole,
}: AccessRuleRowProps) => {
- const { policy, role_ids } = rule
+ const { policy, role_ids, account_ids } = rule
+ const { id: policyId, resource_type } = policy
const handleEdit = useCallback(() => onEdit?.(rule), [onEdit, rule])
const handleAddRole = useCallback(() => onAddRole?.(rule), [onAddRole, rule])
@@ -31,27 +35,33 @@ const AccessRuleRow = ({
const { mutateAsync: updateAppAccessRuleBindings } = useUpdateAppAccessRuleBindings()
const { mutateAsync: updateDatasetAccessRuleBindings } = useUpdateDatasetAccessRuleBindings()
- const handleRemoveRole = useCallback((roleId: string) => {
+ const handleRemoveRole = useCallback((id: string, type: BindingType) => {
const payload = {
- id: policy.id,
- role_ids: role_ids.filter(id => id !== roleId),
- account_ids: [],
+ id: policyId,
+ role_ids: role_ids.map(role => role.id),
+ account_ids: account_ids.map(account => account.id),
}
- if (policy.resource_type === 'app') {
+ if (type === 'role') {
+ payload.role_ids = payload.role_ids.filter(roleId => roleId !== id)
+ }
+ else if (type === 'account') {
+ payload.account_ids = payload.account_ids.filter(accountId => accountId !== id)
+ }
+ if (resource_type === 'app') {
updateAppAccessRuleBindings(payload, {
onSuccess: () => {
toast.success('Access rule updated successfully')
},
})
}
- else if (policy.resource_type === 'dataset') {
+ else if (resource_type === 'dataset') {
updateDatasetAccessRuleBindings(payload, {
onSuccess: () => {
toast.success('Access rule updated successfully')
},
})
}
- }, [policy.id, policy.resource_type, role_ids, updateAppAccessRuleBindings, updateDatasetAccessRuleBindings])
+ }, [account_ids, policyId, resource_type, role_ids, updateAppAccessRuleBindings, updateDatasetAccessRuleBindings])
return (
@@ -65,9 +75,19 @@ const AccessRuleRow = ({
{role_ids.map(role => (
+ ))}
+ {account_ids.map(account => (
+
))}
diff --git a/web/app/components/header/account-setting/access-rules-page/add-rule-targets-modal/index.tsx b/web/app/components/header/account-setting/access-rules-page/add-rule-targets-modal/index.tsx
index 3a5e3abd4a..717c2ff5c4 100644
--- a/web/app/components/header/account-setting/access-rules-page/add-rule-targets-modal/index.tsx
+++ b/web/app/components/header/account-setting/access-rules-page/add-rule-targets-modal/index.tsx
@@ -35,9 +35,7 @@ type AddRuleTargetsModalBaseProps = {
onSubmit: (selection: { roleIds: string[], memberIds: string[] }) => void
}
-export type AddRuleTargetsModalProps = AddRuleTargetsModalBaseProps & {
- open: boolean
-}
+export type AddRuleTargetsModalProps = AddRuleTargetsModalBaseProps
const TABS: Array<{ key: TabKey, label: string }> = [
{ key: 'roles', label: 'ROLES' },
@@ -237,11 +235,9 @@ const AddRuleTargetsModalBody = ({
{role.name}
- {role.description && (
-
- {role.description}
-
- )}
+
+ {role.description || 'No description'}
+
@@ -330,7 +326,6 @@ const AddRuleTargetsModalBody = ({
}
const AddRuleTargetsModal = ({
- open,
ruleName,
initialRoleIds,
initialMemberIds,
@@ -339,7 +334,7 @@ const AddRuleTargetsModal = ({
}: AddRuleTargetsModalProps) => {
return (