fix: privilege for editor role (#6521)

This commit is contained in:
Jason Tan 2024-07-22 15:01:25 +08:00 committed by GitHub
parent a67831773f
commit 87d583f454
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 23 additions and 13 deletions

View File

@ -40,7 +40,7 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (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<IAppDetailLayoutProps> = (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<IAppDetailLayoutProps> = (props) => {
icon: RiTerminalBoxLine,
selectedIcon: RiTerminalBoxFill,
},
...(isCurrentWorkspaceManager
...(isCurrentWorkspaceEditor
? [{
name: mode !== 'workflow'
? t('common.appMenus.logAndAnn')
@ -115,13 +115,13 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (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()

View File

@ -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<ProviderAddedCardProps> = ({
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<ProviderAddedCardProps> = ({
)
}
{
configurationMethods.includes(ConfigurationMethodEnum.predefinedModel) && (
configurationMethods.includes(ConfigurationMethodEnum.predefinedModel) && isCurrentWorkspaceManager && (
<CredentialPanel
onSetup={() => onOpenModal(ConfigurationMethodEnum.predefinedModel)}
provider={provider}
@ -138,7 +140,7 @@ const ProviderAddedCard: FC<ProviderAddedCardProps> = ({
}
</div>
{
configurationMethods.includes(ConfigurationMethodEnum.customizableModel) && (
configurationMethods.includes(ConfigurationMethodEnum.customizableModel) && isCurrentWorkspaceManager && (
<AddModelButton
onClick={() => onOpenModal(ConfigurationMethodEnum.customizableModel)}
className='hidden group-hover:flex group-hover:text-primary-600'

View File

@ -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
<div className='shrink-0 flex items-center'>
{
model.fetch_from === ConfigurationMethodEnum.customizableModel
? (
? (isCurrentWorkspaceManager && (
<Button
className='hidden group-hover:flex h-7'
onClick={() => onConfig({ __model_name: model.model, __model_type: model.model_type })}
@ -81,8 +83,8 @@ const ModelListItem = ({ model, provider, isConfigurable, onConfig, onModifyLoad
<Settings01 className='mr-[5px] w-3.5 h-3.5' />
{t('common.modelProvider.config')}
</Button>
)
: ((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))
? (
<Button
className='opacity-0 group-hover:opacity-100 h-[28px] transition-opacity'
@ -101,7 +103,7 @@ const ModelListItem = ({ model, provider, isConfigurable, onConfig, onModifyLoad
<Switch defaultValue={false} disabled size='md' />
</TooltipPlus>
)
: (
: (isCurrentWorkspaceManager && (
<Switch
className='ml-2'
defaultValue={model?.status === ModelStatusEnum.active}
@ -109,7 +111,7 @@ const ModelListItem = ({ model, provider, isConfigurable, onConfig, onModifyLoad
size='md'
onChange={onEnablingStateChange}
/>
)
))
}
</div>
</div>

View File

@ -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<ModelListProps> = ({
}) => {
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<ModelListProps> = ({
)
} */}
{
isConfigurable && (
isConfigurable && isCurrentWorkspaceManager && (
<div className='grow flex justify-end'>
<AddModelButton onClick={() => onConfig()} />
</div>

View File

@ -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<ProviderCardProps> = ({
}) => {
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<ProviderCardProps> = ({
key={method}
className={'h-7 text-xs shrink-0'}
onClick={() => onOpenModal(method)}
disabled={!isCurrentWorkspaceManager}
>
<Settings01 className={`mr-[5px] w-3.5 h-3.5 ${s.icon}`} />
<span className='text-xs inline-flex items-center justify-center overflow-ellipsis shrink-0'>{t('common.operation.setup')}</span>
@ -83,6 +86,7 @@ const ProviderCard: FC<ProviderCardProps> = ({
key={method}
className='px-0 h-7 text-xs'
onClick={() => onOpenModal(method)}
disabled={!isCurrentWorkspaceManager}
>
<RiAddLine className='mr-[5px] w-3.5 h-3.5' />
{t('common.modelProvider.addModel')}