diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx index 86bee98bcd..09569df8bf 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx @@ -40,7 +40,7 @@ const AppDetailLayout: FC = (props) => { const pathname = usePathname() const media = useBreakpoints() const isMobile = media === MediaType.mobile - const { isCurrentWorkspaceManager, isCurrentWorkspaceEditor } = useAppContext() + const { isCurrentWorkspaceEditor } = useAppContext() const { appDetail, setAppDetail, setAppSiderbarExpand } = useStore(useShallow(state => ({ appDetail: state.appDetail, setAppDetail: state.setAppDetail, @@ -53,7 +53,7 @@ const AppDetailLayout: FC = (props) => { selectedIcon: NavIcon }>>([]) - const getNavigations = useCallback((appId: string, isCurrentWorkspaceManager: boolean, isCurrentWorkspaceEditor: boolean, mode: string) => { + const getNavigations = useCallback((appId: string, isCurrentWorkspaceEditor: boolean, mode: string) => { const navs = [ ...(isCurrentWorkspaceEditor ? [{ @@ -70,7 +70,7 @@ const AppDetailLayout: FC = (props) => { icon: RiTerminalBoxLine, selectedIcon: RiTerminalBoxFill, }, - ...(isCurrentWorkspaceManager + ...(isCurrentWorkspaceEditor ? [{ name: mode !== 'workflow' ? t('common.appMenus.logAndAnn') @@ -115,13 +115,13 @@ const AppDetailLayout: FC = (props) => { } else { setAppDetail(res) - setNavigation(getNavigations(appId, isCurrentWorkspaceManager, isCurrentWorkspaceEditor, res.mode)) + setNavigation(getNavigations(appId, isCurrentWorkspaceEditor, res.mode)) } }).catch((e: any) => { if (e.status === 404) router.replace('/apps') }) - }, [appId, isCurrentWorkspaceManager, isCurrentWorkspaceEditor]) + }, [appId, isCurrentWorkspaceEditor]) useUnmount(() => { setAppDetail() diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx index 85af0e9fd1..5e73b36c42 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx @@ -25,6 +25,7 @@ import { ChevronDownDouble } from '@/app/components/base/icons/src/vender/line/a import { fetchModelProviderModelList } from '@/service/common' import { useEventEmitterContextContext } from '@/context/event-emitter' import { IS_CE_EDITION } from '@/config' +import { useAppContext } from '@/context/app-context' export const UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST = 'UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST' type ProviderAddedCardProps = { @@ -44,6 +45,7 @@ const ProviderAddedCard: FC = ({ const configurationMethods = provider.configurate_methods.filter(method => method !== ConfigurationMethodEnum.fetchFromRemote) const systemConfig = provider.system_configuration const hasModelList = fetched && !!modelList.length + const { isCurrentWorkspaceManager } = useAppContext() const showQuota = systemConfig.enabled && [...MODEL_PROVIDER_QUOTA_GET_PAID].includes(provider.provider) && !IS_CE_EDITION const getModelList = async (providerName: string) => { @@ -103,7 +105,7 @@ const ProviderAddedCard: FC = ({ ) } { - configurationMethods.includes(ConfigurationMethodEnum.predefinedModel) && ( + configurationMethods.includes(ConfigurationMethodEnum.predefinedModel) && isCurrentWorkspaceManager && ( onOpenModal(ConfigurationMethodEnum.predefinedModel)} provider={provider} @@ -138,7 +140,7 @@ const ProviderAddedCard: FC = ({ } { - configurationMethods.includes(ConfigurationMethodEnum.customizableModel) && ( + configurationMethods.includes(ConfigurationMethodEnum.customizableModel) && isCurrentWorkspaceManager && ( onOpenModal(ConfigurationMethodEnum.customizableModel)} className='hidden group-hover:flex group-hover:text-primary-600' diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list-item.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list-item.tsx index 0f110c51d7..1272627061 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list-item.tsx +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list-item.tsx @@ -15,6 +15,7 @@ import TooltipPlus from '@/app/components/base/tooltip-plus' import { useProviderContext, useProviderContextSelector } from '@/context/provider-context' import { disableModel, enableModel } from '@/service/common' import { Plan } from '@/app/components/billing/type' +import { useAppContext } from '@/context/app-context' export type ModelListItemProps = { model: ModelItem @@ -28,6 +29,7 @@ const ModelListItem = ({ model, provider, isConfigurable, onConfig, onModifyLoad const { t } = useTranslation() const { plan } = useProviderContext() const modelLoadBalancingEnabled = useProviderContextSelector(state => state.modelLoadBalancingEnabled) + const { isCurrentWorkspaceManager } = useAppContext() const toggleModelEnablingStatus = useCallback(async (enabled: boolean) => { if (enabled) @@ -73,7 +75,7 @@ const ModelListItem = ({ model, provider, isConfigurable, onConfig, onModifyLoad
{ model.fetch_from === ConfigurationMethodEnum.customizableModel - ? ( + ? (isCurrentWorkspaceManager && ( - ) - : ((modelLoadBalancingEnabled || plan.type === Plan.sandbox) && !model.deprecated && [ModelStatusEnum.active, ModelStatusEnum.disabled].includes(model.status)) + )) + : (isCurrentWorkspaceManager && (modelLoadBalancingEnabled || plan.type === Plan.sandbox) && !model.deprecated && [ModelStatusEnum.active, ModelStatusEnum.disabled].includes(model.status)) ? (
diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx index 87f7ef91a4..e321d4076d 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx @@ -14,6 +14,7 @@ import AddModelButton from './add-model-button' import ModelListItem from './model-list-item' import { ChevronDownDouble } from '@/app/components/base/icons/src/vender/line/arrows' import { useModalContextSelector } from '@/context/modal-context' +import { useAppContext } from '@/context/app-context' type ModelListProps = { provider: ModelProvider @@ -31,6 +32,7 @@ const ModelList: FC = ({ }) => { const { t } = useTranslation() const configurativeMethods = provider.configurate_methods.filter(method => method !== ConfigurationMethodEnum.fetchFromRemote) + const { isCurrentWorkspaceManager } = useAppContext() const isConfigurable = configurativeMethods.includes(ConfigurationMethodEnum.customizableModel) const setShowModelLoadBalancingModal = useModalContextSelector(state => state.setShowModelLoadBalancingModal) @@ -68,7 +70,7 @@ const ModelList: FC = ({ ) } */} { - isConfigurable && ( + isConfigurable && isCurrentWorkspaceManager && (
onConfig()} />
diff --git a/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx b/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx index 2e601819da..ec66a9928b 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx @@ -19,6 +19,7 @@ import ProviderIcon from '../provider-icon' import s from './index.module.css' import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' import Button from '@/app/components/base/button' +import { useAppContext } from '@/context/app-context' type ProviderCardProps = { provider: ModelProvider @@ -31,6 +32,7 @@ const ProviderCard: FC = ({ }) => { const { t } = useTranslation() const language = useLanguage() + const { isCurrentWorkspaceManager } = useAppContext() const configurateMethods = provider.configurate_methods.filter(method => method !== ConfigurationMethodEnum.fetchFromRemote) return ( @@ -72,6 +74,7 @@ const ProviderCard: FC = ({ key={method} className={'h-7 text-xs shrink-0'} onClick={() => onOpenModal(method)} + disabled={!isCurrentWorkspaceManager} > {t('common.operation.setup')} @@ -83,6 +86,7 @@ const ProviderCard: FC = ({ key={method} className='px-0 h-7 text-xs' onClick={() => onOpenModal(method)} + disabled={!isCurrentWorkspaceManager} > {t('common.modelProvider.addModel')}