diff --git a/client/src/pages/LoginPage.js b/client/src/pages/LoginPage.js index 0c9d216..08cb038 100644 --- a/client/src/pages/LoginPage.js +++ b/client/src/pages/LoginPage.js @@ -1,5 +1,5 @@ import { Helmet } from 'react-helmet-async'; -import { Link } from "react-router-dom"; +import { Link, useLocation } from "react-router-dom"; // @mui import { styled } from '@mui/material/styles'; import { Container, Typography, Divider, Stack, Button } from '@mui/material'; @@ -42,6 +42,7 @@ const StyledContent = styled('div')(({ theme }) => ({ // ---------------------------------------------------------------------- export default function LoginPage() { + const location = useLocation(); const mdUp = useResponsive('up', 'md'); return ( @@ -99,7 +100,7 @@ export default function LoginPage() { - + diff --git a/client/src/routes.js b/client/src/routes.js index 701ae87..3ccf05e 100644 --- a/client/src/routes.js +++ b/client/src/routes.js @@ -1,4 +1,4 @@ -import { Navigate, useRoutes } from 'react-router-dom'; +import { Navigate, useLocation, useRoutes } from 'react-router-dom'; // layouts import DashboardLayout from './layouts/dashboard'; import SimpleLayout from './layouts/simple'; @@ -16,13 +16,17 @@ import VideoListPage from './pages/VideoListPage'; import VideosPage from './pages/VideosPage' import DashboardAppPage from './pages/DashboardAppPage'; + // ---------------------------------------------------------------------- + export default function Router() { + const isLoggedIn = localStorage.getItem("email") ? true : false; + const location = useLocation(); const routes = useRoutes([ { path: '/', - element: , + element: isLoggedIn ? : , children: [ { element: , index: true }, { path: 'dashboard', element: }, diff --git a/client/src/sections/auth/LoginForm.js b/client/src/sections/auth/LoginForm.js index 65ba7fd..d92c8b3 100644 --- a/client/src/sections/auth/LoginForm.js +++ b/client/src/sections/auth/LoginForm.js @@ -23,7 +23,7 @@ import { API_SERVER } from '../../constants'; // ---------------------------------------------------------------------- -export default function LoginForm() { +export default function LoginForm({location}) { const navigate = useNavigate(); const [showPassword, setShowPassword] = useState(false); @@ -36,6 +36,8 @@ export default function LoginForm() { const handleSubmit = async () => { + const redirectUrl = location.state ? location.state.from.pathname : '/videos' + await axios.post(`${API_SERVER}/api/login`, loginData, { @@ -46,12 +48,11 @@ export default function LoginForm() { } ) .then(function (response){ - console.log(response.data.user.name) localStorage.setItem("name", response.data.user.name); localStorage.setItem("email", response.data.user.email); setAlertContext({type:'success', message: 'Login Successful'}); - setTimeout(() => navigate('/videos'), 1000); + setTimeout(() => navigate(redirectUrl), 1000); }) .catch(function (error){ setAlertContext({type:'error', message: error.response.data.message});