blob: 992f37297c224dd4b3d447dbd89f504c29a1d050 [file] [log] [blame] [edit]
import { Navigate, Outlet } from 'react-router-dom'
import React from 'react'
import { useSelector } from 'react-redux'
interface PrivateRouteProps {
role: number
redirectPath?: string
children?: React.ReactNode
}
const PrivateRoute = ({
role,
redirectPath = '/login',
children
}: PrivateRouteProps) => {
const isLogin = useSelector((state: any) => state.user.isLogin)
const userRole = useSelector((state: any) => state.user.role)
if (!isLogin) {
return <Navigate to={redirectPath} replace />
}
if (role && role >= userRole) {
return <Navigate to={redirectPath} replace />
}
return children ? (
<>{children}</>
) : (
<Outlet />
)
}
export default PrivateRoute