Permission (#1687)

Co-authored-by: Archer <545436317@qq.com>
Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
This commit is contained in:
Archer
2024-06-04 17:52:00 +08:00
committed by GitHub
parent fcb915c988
commit 19c8a06d51
109 changed files with 2291 additions and 1091 deletions

View File

@@ -1,19 +1,34 @@
import React from 'react';
import React, { useMemo } from 'react';
import { PermissionTypeEnum, PermissionTypeMap } from '@fastgpt/global/support/permission/constant';
import { Box, Flex, FlexProps } from '@chakra-ui/react';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useTranslation } from 'next-i18next';
import { PermissionValueType } from '@fastgpt/global/support/permission/type';
import { Permission } from '@fastgpt/global/support/permission/controller';
const PermissionIconText = ({
permission,
defaultPermission,
...props
}: { permission: `${PermissionTypeEnum}` } & FlexProps) => {
}: {
permission?: `${PermissionTypeEnum}`;
defaultPermission?: PermissionValueType;
} & FlexProps) => {
const { t } = useTranslation();
return PermissionTypeMap[permission] ? (
const per = useMemo(() => {
if (permission) return permission;
if (defaultPermission) {
return new Permission({ per: defaultPermission }).hasReadPer ? 'public' : 'private';
}
return 'private';
}, [defaultPermission, permission]);
return PermissionTypeMap[per] ? (
<Flex alignItems={'center'} {...props}>
<MyIcon name={PermissionTypeMap[permission]?.iconLight as any} w={'14px'} />
<MyIcon name={PermissionTypeMap[per]?.iconLight as any} w={'14px'} />
<Box ml={'2px'} lineHeight={1}>
{t(PermissionTypeMap[permission]?.label)}
{t(PermissionTypeMap[per]?.label)}
</Box>
</Flex>
) : null;