mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-25 07:38:15 +08:00

Signed-off-by: -LAN- <laipz8200@outlook.com> Co-authored-by: Hash Brown <hi@xzd.me> Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: GareArc <chen4851@purdue.edu> Co-authored-by: Byron.wang <byron@dify.ai> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: -LAN- <laipz8200@outlook.com> Co-authored-by: Garfield Dai <dai.hai@foxmail.com> Co-authored-by: KVOJJJin <jzongcode@gmail.com> Co-authored-by: Alexi.F <654973939@qq.com> Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com> Co-authored-by: kautsar_masuara <61046989+izon-masuara@users.noreply.github.com> Co-authored-by: achmad-kautsar <achmad.kautsar@insignia.co.id> Co-authored-by: Xin Zhang <sjhpzx@gmail.com> Co-authored-by: kelvintsim <83445753+kelvintsim@users.noreply.github.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: Zixuan Cheng <61724187+Theysua@users.noreply.github.com>
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { PermissionType } from '../types'
|
|
import { useAppContext } from '@/context/app-context'
|
|
import Toast from '../../base/toast'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { useInvalidatePermissions, useMutationPermissions, usePermissions } from '@/service/use-plugins'
|
|
import { useMemo } from 'react'
|
|
import { useGlobalPublicStore } from '@/context/global-public-context'
|
|
|
|
const hasPermission = (permission: PermissionType | undefined, isAdmin: boolean) => {
|
|
if (!permission)
|
|
return false
|
|
|
|
if (permission === PermissionType.noOne)
|
|
return false
|
|
|
|
if (permission === PermissionType.everyone)
|
|
return true
|
|
|
|
return isAdmin
|
|
}
|
|
|
|
const usePermission = () => {
|
|
const { t } = useTranslation()
|
|
const { isCurrentWorkspaceManager, isCurrentWorkspaceOwner } = useAppContext()
|
|
const { data: permissions } = usePermissions()
|
|
const invalidatePermissions = useInvalidatePermissions()
|
|
const { mutate: updatePermission, isPending: isUpdatePending } = useMutationPermissions({
|
|
onSuccess: () => {
|
|
invalidatePermissions()
|
|
Toast.notify({
|
|
type: 'success',
|
|
message: t('common.api.actionSuccess'),
|
|
})
|
|
},
|
|
})
|
|
const isAdmin = isCurrentWorkspaceManager || isCurrentWorkspaceOwner
|
|
|
|
return {
|
|
canManagement: hasPermission(permissions?.install_permission, isAdmin),
|
|
canDebugger: hasPermission(permissions?.debug_permission, isAdmin),
|
|
canSetPermissions: isAdmin,
|
|
permissions,
|
|
setPermissions: updatePermission,
|
|
isUpdatePending,
|
|
}
|
|
}
|
|
|
|
export const useCanInstallPluginFromMarketplace = () => {
|
|
const { enable_marketplace } = useGlobalPublicStore(s => s.systemFeatures)
|
|
const { canManagement } = usePermission()
|
|
|
|
const canInstallPluginFromMarketplace = useMemo(() => {
|
|
return enable_marketplace && canManagement
|
|
}, [enable_marketplace, canManagement])
|
|
|
|
return {
|
|
canInstallPluginFromMarketplace,
|
|
}
|
|
}
|
|
|
|
export default usePermission
|