diff --git a/src/components/AdminOnly.tsx b/src/components/AdminOnly.tsx new file mode 100644 index 0000000..9420883 --- /dev/null +++ b/src/components/AdminOnly.tsx @@ -0,0 +1,12 @@ +import {usePermissions} from '@refinedev/core' +import {PropsWithChildren} from 'react' + +export const AdminOnly: React.FC = ({children}) => { + const {data: permissions} = usePermissions() // добавляем generic тип + + if (!permissions?.includes('admin')) { + return null + } + + return <>{children} +} diff --git a/src/components/CustomDataGrid.tsx b/src/components/CustomDataGrid.tsx index 9e75048..94b91d4 100644 --- a/src/components/CustomDataGrid.tsx +++ b/src/components/CustomDataGrid.tsx @@ -106,7 +106,7 @@ export const CustomDataGrid = ({hasCoordinates = false, columns = [], resource, )} - {showDevData && availableDevFields.length > 0 && ( + {(import.meta.env.DEV || showDevData) && availableDevFields.length > 0 && ( diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 0491678..4d408e8 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -6,7 +6,7 @@ import IconButton from '@mui/material/IconButton' import Stack from '@mui/material/Stack' import Toolbar from '@mui/material/Toolbar' import Typography from '@mui/material/Typography' -import {useGetIdentity} from '@refinedev/core' +import {useGetIdentity, usePermissions} from '@refinedev/core' import {HamburgerMenu, RefineThemedLayoutV2HeaderProps} from '@refinedev/mui' import React, {useContext} from 'react' import {ColorModeContext} from '../../contexts/color-mode' @@ -15,12 +15,14 @@ type IUser = { id: number name: string avatar: string + is_admin: boolean } export const Header: React.FC = ({sticky = true}) => { const {mode, setMode} = useContext(ColorModeContext) - const {data: user} = useGetIdentity() + const {data: permissions} = usePermissions() + const isAdmin = permissions?.includes('admin') return ( @@ -33,6 +35,9 @@ export const Header: React.FC = ({sticky = true onClick={() => { setMode() }} + sx={{ + marginRight: '2px', + }} > {mode === 'dark' ? : } @@ -40,17 +45,36 @@ export const Header: React.FC = ({sticky = true {(user?.avatar || user?.name) && ( {user?.name && ( - - {user?.name} - + + + {user?.name} + + + + {isAdmin ? 'Администратор' : 'Пользователь'} + + )}