diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index d96d1ce..f8cb1fc 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -6,7 +6,7 @@ import PageNotFound from './pages/PageNotFound.jsx'; import MainPage from './pages/MainPage.jsx'; import LoginPage from './pages/LoginPage.jsx'; import router from './utils/routes.js'; -import AuthProvider, { PrivateRoute } from './context/AuthProvider.jsx'; +import AuthProvider from './context/AuthProvider.jsx'; const App = () => { const { t } = useTranslation(); @@ -14,24 +14,19 @@ const App = () => { return (
- - - {t('navBar.title')} - - - + + + {t('navBar.title')} + + + - - - )} /> - )} /> - } /> + } /> + } /> } /> -
); diff --git a/frontend/src/context/AuthProvider.jsx b/frontend/src/context/AuthProvider.jsx index a2ea7d3..4f90c0f 100644 --- a/frontend/src/context/AuthProvider.jsx +++ b/frontend/src/context/AuthProvider.jsx @@ -1,8 +1,5 @@ import { useState } from 'react'; -import { useNavigate } from 'react-router-dom'; -import useAuth from '../hooks/index.jsx'; import AuthContext from '../context/index.jsx'; -import router from '../utils/routes.js'; // eslint-disable-next-line react/prop-types const AuthProvider = ({ children }) => { @@ -21,13 +18,4 @@ const AuthProvider = ({ children }) => { ); }; -export const PrivateRoute = ({ children }) => { - const auth = useAuth(); - const navigate = useNavigate(); - - return ( - auth.loggedIn ? children : navigate(router.mainPath) - ); -}; - export default AuthProvider; \ No newline at end of file diff --git a/frontend/src/locales/ru.js b/frontend/src/locales/ru.js index f3abfe9..b26fcfa 100644 --- a/frontend/src/locales/ru.js +++ b/frontend/src/locales/ru.js @@ -1,3 +1,5 @@ +import Channels from "../components/Сhannels"; + export default { translation: { loginForm: { @@ -11,6 +13,9 @@ export default { navBar: { title: 'Hexlet Chat', button: 'Выйти', + }, + channels: { + title: 'Каналы', } // singUpForm: { // username: '' diff --git a/frontend/src/pages/LoginPage.jsx b/frontend/src/pages/LoginPage.jsx index ab489af..379023f 100644 --- a/frontend/src/pages/LoginPage.jsx +++ b/frontend/src/pages/LoginPage.jsx @@ -30,11 +30,11 @@ const LoginPage = () => { onSubmit: async (values) => { setAuthFailed(false); try { - const res = await axios.post(router.loginPath, values); + const res = await axios.post(router.loginPath(), values); console.log(res); localStorage.setItem('token', res.data.token); auth.logIn(); - navigate(router.main); + navigate(router.main()); } catch (err) { formik.setSubmitting(false); if (axios.isAxiosError(err) && err.response.status === 401) { diff --git a/frontend/src/pages/MainPage.jsx b/frontend/src/pages/MainPage.jsx index de560f4..5f398f0 100644 --- a/frontend/src/pages/MainPage.jsx +++ b/frontend/src/pages/MainPage.jsx @@ -1,16 +1,30 @@ import { Container, Row, Col, Nav } from 'react-bootstrap'; +import { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useNavigate } from 'react-router-dom'; import AddChannelsButton from '../components/AddCannelsButton.jsx'; import Channel from '../components/Сhannels.jsx'; import MessageField from '../components/MessageField.jsx'; +import useAuth from '../hooks/index.jsx'; +import router from '../utils/routes.js'; const MainPage = () => { + const { t } = useTranslation(); + const { loggedIn } = useAuth(); + const navigate = useNavigate(); + + useEffect(() => { + if (!loggedIn) { + navigate(router.login()); + } + }, []); return (
- Каналы + {t('channels.title')}