diff --git a/login-frontend/src/App.js b/login-frontend/src/App.js index 8cb6a32..0b4427d 100644 --- a/login-frontend/src/App.js +++ b/login-frontend/src/App.js @@ -10,6 +10,7 @@ import Course from './pages/coursePage/Course'; import Course1 from './pages/coursePage/Course1'; import CourseRegistration from './pages/coursePage/CourseRegistration'; import TeacherDashBoard from './pages/dashboardPage/TeacherDashBoard'; +import AdminDashBoard from './pages/dashboardPage/TeacherDashBoard'; function App() { return ( @@ -25,7 +26,7 @@ function App() { } /> } /> - } /> + } /> } /> } /> } /> diff --git a/login-frontend/src/components/auth/changePassword.js b/login-frontend/src/components/auth/changePassword.js index 2f6d738..4257210 100644 --- a/login-frontend/src/components/auth/changePassword.js +++ b/login-frontend/src/components/auth/changePassword.js @@ -21,9 +21,9 @@ function ChangePassword(props) { } const response = await auth.login(email, password); console.log("response data: ", response); - if (response.message === "Login successful") { + if (response.message === "Password changed successfully.") { setErrorMsg(null); - setSuccessMsg("Login successful!"); + setSuccessMsg("Password changed successfully."); navigate('/' + path[1] + '/dashboard'); } else { setErrorMsg(response.message); diff --git a/login-frontend/src/components/auth/login.js b/login-frontend/src/components/auth/login.js index ca5ab04..e3418ba 100644 --- a/login-frontend/src/components/auth/login.js +++ b/login-frontend/src/components/auth/login.js @@ -2,7 +2,6 @@ import React, { useState } from 'react'; import { useAuth } from '../../hooks/useAuth'; // Assuming useAuth hook exists import Alert from '@mui/material/Alert' import { useNavigate } from 'react-router-dom'; -import ChangePassword from './changePassword'; function Login(props) { const path = window.location.pathname.split('/'); const [email, setEmail] = useState(''); @@ -20,7 +19,7 @@ function Login(props) { if (response.message === "Login successful") { setErrorMsg(null); setSuccessMsg("Login successful!"); - navigate('/' + path[0] + '/dashboard'); + navigate('/' + path[1] + '/dashboard'); } else if(response.message === "Default password in use. Password change required."){ setErrorMsg(response.message); setSuccessMsg(null); diff --git a/login-frontend/src/context/authContext.js b/login-frontend/src/context/authContext.js index 59ca1c2..1261f8f 100644 --- a/login-frontend/src/context/authContext.js +++ b/login-frontend/src/context/authContext.js @@ -8,18 +8,17 @@ export function AuthProvider({ children }) { const login = async (email, password) => { try { const data = await authService.login(email, password); - if (data) { + if (data && data.token) { + sessionStorage.setItem('jwtToken'), data.token; setUser(data); return data; } else { - // Xử lý trường hợp không nhận được dữ liệu từ phản hồi - console.error('Không nhận được dữ liệu từ phản hồi khi đăng nhập'); - return null; // Hoặc trả về giá trị mặc định khác + console.error('No data or token received on login'); + return null; } } catch (error) { - // Xử lý lỗi từ phản hồi - console.error('Lỗi khi gọi hàm login:', error); - return null; // Hoặc trả về giá trị mặc định khác + console.error('Error during login:', error); + return null; } }; diff --git a/login-frontend/src/hooks/useAuth.js b/login-frontend/src/hooks/useAuth.js index c3de5c7..5bd16e4 100644 --- a/login-frontend/src/hooks/useAuth.js +++ b/login-frontend/src/hooks/useAuth.js @@ -1,6 +1,20 @@ import { useContext } from 'react'; import { AuthContext } from '../context/authContext'; +import { useEffect, useNavigate } from 'react'; export function useAuth() { return useContext(AuthContext); } +export function useRequireAuth(redirectUrl = '/login') { + const auth = useAuth(); + const navigate = useNavigate(); + + useEffect(() => { + const token = sessionStorage.getItem('jwtToken'); + if (!token) { + navigate(redirectUrl); + } + }, [navigate, redirectUrl]); + + return auth; +} \ No newline at end of file