mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	 d186daa131
			
		
	
	
		d186daa131
		
			
		
	
	
	
	
		
			
			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
 |