diff --git a/frontend/src/context/userContext.jsx b/frontend/src/context/userContext.jsx index 4ed1f5e..3a31916 100644 --- a/frontend/src/context/userContext.jsx +++ b/frontend/src/context/userContext.jsx @@ -2,6 +2,11 @@ import React, { createContext, useState, useEffect } from "react"; import axiosInstance from "../utils/axiosinstance"; import { API_PATHS } from "../utils/apiPaths"; import toast from "react-hot-toast"; +import { + isMockAuthEnabled, + getMockUser, + clearMockUser, +} from "../utils/mockAuth"; export const UserContext = createContext(); @@ -14,6 +19,15 @@ export const UserProvider = ({ children }) => { useEffect(() => { if (user) return; + if (isMockAuthEnabled()) { + const mockUser = getMockUser(); + if (mockUser) { + setUser(mockUser); + } + setLoading(false); + return; + } + const accessToken = localStorage.getItem("token") || sessionStorage.getItem("token"); @@ -45,17 +59,14 @@ export const UserProvider = ({ children }) => { const updateUser = (userData) => { setUser(userData); - const authToken = userData.token || userData.accessToken; - if (authToken) { - localStorage.setItem("token", authToken); - } setLoading(false); }; const clearUser = () => { setUser(null); setSheetProgress([]); localStorage.removeItem("token"); -sessionStorage.removeItem("token"); + sessionStorage.removeItem("token"); + clearMockUser(); }; // Optionally, add a function to refresh sheet progress const refreshSheetProgress = async () => { @@ -73,4 +84,4 @@ sessionStorage.removeItem("token"); ); }; -export default UserProvider; \ No newline at end of file +export default UserProvider; diff --git a/frontend/src/pages/Auth/Login.jsx b/frontend/src/pages/Auth/Login.jsx index 37498fc..9628335 100644 --- a/frontend/src/pages/Auth/Login.jsx +++ b/frontend/src/pages/Auth/Login.jsx @@ -6,6 +6,11 @@ import { validateEmail } from "../../utils/helper"; import { API_PATHS } from "../../utils/apiPaths"; import { UserContext } from "../../context/userContext"; import axiosInstance from "../../utils/axiosinstance"; +import { + isMockAuthEnabled, + mockLogin, + saveMockUser, +} from "../../utils/mockAuth"; import { LuArrowRight } from "react-icons/lu"; const Login = ({ setCurrentPage, onLoginSuccess }) => { @@ -33,19 +38,31 @@ const Login = ({ setCurrentPage, onLoginSuccess }) => { setLoading(true); try { - const response = await axiosInstance.post(API_PATHS.AUTH.LOGIN, { - email, - password, - }); + const response = isMockAuthEnabled() + ? await mockLogin({ email, password }) + : await axiosInstance.post(API_PATHS.AUTH.LOGIN, { + email, + password, + }); const { token, accessToken } = response.data; const authToken = token || accessToken; if (authToken) { + // Keep token storage in one place: the user's Remember Me choice. if (rememberMe) { + sessionStorage.removeItem("token"); localStorage.setItem("token", authToken); } else { + localStorage.removeItem("token"); sessionStorage.setItem("token", authToken); } + if (isMockAuthEnabled()) { + saveMockUser({ + ...response.data, + password, + accessToken: authToken, + }); + } updateUser(response.data); if (onLoginSuccess) { onLoginSuccess();