2024-10-15 21:35:56 +08:00

40 lines
1.1 KiB
TypeScript

import { useEffect } from 'react'
import { PermissionType } from '../types'
import {
usePluginPageContext,
} from './context'
import { useAppContext } from '@/context/app-context'
const hasPermission = (permission: PermissionType, isAdmin: boolean) => {
if (permission === PermissionType.noOne)
return false
if (permission === PermissionType.everyone)
return true
return isAdmin
}
const usePermission = () => {
const { isCurrentWorkspaceManager, isCurrentWorkspaceOwner } = useAppContext()
const [permissions, setPermissions] = usePluginPageContext(v => [v.permissions, v.setPermissions])
const isAdmin = isCurrentWorkspaceManager || isCurrentWorkspaceOwner
useEffect(() => {
// TODO: fetch permissions from server
setPermissions({
canManagement: PermissionType.everyone,
canDebugger: PermissionType.everyone,
})
}, [])
return {
canManagement: hasPermission(permissions.canManagement, isAdmin),
canDebugger: hasPermission(permissions.canDebugger, isAdmin),
canSetPermissions: isAdmin,
permissions,
setPermissions,
}
}
export default usePermission