diff --git a/web/app/(commonLayout)/apps/AppCard.tsx b/web/app/(commonLayout)/apps/AppCard.tsx
index 31b9ed87c2..b7c9a2eee4 100644
--- a/web/app/(commonLayout)/apps/AppCard.tsx
+++ b/web/app/(commonLayout)/apps/AppCard.tsx
@@ -36,6 +36,7 @@ import AccessControl from '@/app/components/app/app-access-control'
import { AccessMode } from '@/models/access-control'
import { useGlobalPublicStore } from '@/context/global-public-context'
import { formatTime } from '@/utils/time'
+import { useGetUserCanAccessApp } from '@/service/access-control'
export type AppCardProps = {
app: App
@@ -190,6 +191,7 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
}, [onRefresh, mutateApps, setShowAccessControl])
const Operations = (props: HtmlContentProps) => {
+ const { data: userCanAccessApp, isLoading: isGettingUserCanAccessApp } = useGetUserCanAccessApp({ appId: app?.id, enabled: (!!props?.open && systemFeatures.webapp_auth.enabled) })
const onMouseLeave = async () => {
props.onClose?.()
}
@@ -267,10 +269,14 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
>
)}
-
-
+ {
+ (isGettingUserCanAccessApp || !userCanAccessApp?.result) ? null : <>
+
+
+ >
+ }
{
systemFeatures.webapp_auth.enabled && isCurrentWorkspaceEditor && <>
diff --git a/web/app/components/base/popover/index.tsx b/web/app/components/base/popover/index.tsx
index 2a831e0c24..0e7c384564 100644
--- a/web/app/components/base/popover/index.tsx
+++ b/web/app/components/base/popover/index.tsx
@@ -3,6 +3,7 @@ import { Fragment, cloneElement, useRef } from 'react'
import cn from '@/utils/classnames'
export type HtmlContentProps = {
+ open?: boolean
onClose?: () => void
onClick?: () => void
}
@@ -100,7 +101,8 @@ export default function CustomPopover({
}
>
{cloneElement(htmlContent as React.ReactElement, {
- onClose: () => onMouseLeave(open),
+ open,
+ onClose: close,
...(manualClose
? {
onClick: close,
diff --git a/web/service/access-control.ts b/web/service/access-control.ts
index 865909d2f9..36999bf8f3 100644
--- a/web/service/access-control.ts
+++ b/web/service/access-control.ts
@@ -86,5 +86,8 @@ export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true, enabled }
enabled: !!appId && enabled,
staleTime: 0,
gcTime: 0,
+ initialData: {
+ result: !enabled,
+ },
})
}