From ba76b8189092af7d8139527a0364ecba1e037701 Mon Sep 17 00:00:00 2001 From: Harshitha Shetty <141444342+HarshithaShetty27@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:58:35 +0530 Subject: [PATCH] Fixed isAdmin code in navbar and login --- client/src/Pages/Login.jsx | 31 +--------- client/src/Pages/Navbar.jsx | 117 ++++++------------------------------ 2 files changed, 22 insertions(+), 126 deletions(-) diff --git a/client/src/Pages/Login.jsx b/client/src/Pages/Login.jsx index abf1528..cabf896 100644 --- a/client/src/Pages/Login.jsx +++ b/client/src/Pages/Login.jsx @@ -15,10 +15,6 @@ function AuthPage() { }); const [signin, setSignin] = useState(false); - const adminEmails = [ - "harshitha.ss@somaiya.edu", - ]; - const notifyError = (message) => { toast.error(message); }; @@ -74,17 +70,8 @@ function AuthPage() { )}?d=identicon`; user.profilePicture = gravatarUrl; - if (adminEmails.includes(user.email)) { - await axios.post(`http://localhost:8080/api/user/make-admin/${user._id}`); - const updatedUser = await axios.get(`http://localhost:8080/api/user/${user._id}`); - user.isAdmin = updatedUser.data.isAdmin; - localStorage.setItem("isAdmin", user.isAdmin); - } else { - localStorage.setItem("isAdmin", false); - } - - // ✅ Save user to localStorage localStorage.setItem("user", JSON.stringify(user)); + window.location.href = "/Welcome"; } } catch (error) { @@ -98,20 +85,6 @@ function AuthPage() { window.location.href = "http://localhost:8080/auth/google"; }; - useEffect(() => { - const queryParams = new URLSearchParams(window.location.search); - const email = queryParams.get("email"); - - if (email) { - if (adminEmails.includes(email)) { - localStorage.setItem("isAdmin", true); - } else { - localStorage.setItem("isAdmin", false); - } - } - }, []); - - return ( <> @@ -265,4 +238,4 @@ function SignInForm(props) { ); } -export default AuthPage; +export default AuthPage; \ No newline at end of file diff --git a/client/src/Pages/Navbar.jsx b/client/src/Pages/Navbar.jsx index bef01e5..18184e2 100644 --- a/client/src/Pages/Navbar.jsx +++ b/client/src/Pages/Navbar.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from "react"; import { FaUserCircle } from "react-icons/fa"; -import { NavLink, useNavigate } from "react-router-dom"; // Import NavLink for navigation +import { NavLink, useNavigate } from "react-router-dom"; import axios from "axios"; import { toast, ToastContainer } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; @@ -10,68 +10,31 @@ const Navbar = () => { const [user, setUser] = useState(null); const [isAdmin, setIsAdmin] = useState(false); - // useEffect(() => { - // const loggedInUser = localStorage.getItem("user"); - // const adminStatus = localStorage.getItem("isAdmin"); - - // if (loggedInUser) { - // // ✅ Set user from localStorage - // setUser(JSON.parse(loggedInUser)); - // if (adminStatus === "true") setIsAdmin(true); - // } - - // // ✅ Even after refresh, reconfirm the user from backend - // axios.get("http://localhost:8080/api/user/profile", { withCredentials: true }) - // .then((response) => { - // const userData = response.data.user; - // setUser(userData); - // console.log(userData); - - // // ✅ Check if the user is admin (FROM BACKEND) - // if (userData.isAdmin == true) { - // setIsAdmin(true); - // localStorage.setItem("isAdmin", true); - // } else { - // setIsAdmin(false); - // localStorage.setItem("isAdmin", false); - // } - // console.log(isAdmin); - // }) - // .catch((error) => { - // console.error("Error fetching user data:", error); - // toast.error("Failed to fetch user data."); - // }); - // }, []); - useEffect(() => { axios.get("http://localhost:8080/api/user/profile", { withCredentials: true }) .then((response) => { const userData = response.data.user; setUser(userData); - - if (userData.isAdmin) { - setIsAdmin(true); - localStorage.setItem("isAdmin", "true"); - } else { - setIsAdmin(false); - localStorage.setItem("isAdmin", "false"); - } - + setIsAdmin(userData.isAdmin); }) .catch((error) => { console.error("Error fetching user data:", error); }); - }, [user]); // ✅ Add `user` dependency to re-run when `user` updates + }, []); + const NavlinkStyle = { + color: "white", + textDecoration: "none", + fontSize: "16px", + transition: "0.3s", + padding: "10px 15px", + borderRadius: "5px" + } - // Handle logout functionality const handleLogout = async () => { try { - // Call the logout API await axios.get("http://localhost:8080/auth/logout", { withCredentials: true }); localStorage.clear(); - - // Redirect to the login page after successful logout navigate("/"); } catch (error) { console.error("Error during logout:", error); @@ -108,76 +71,37 @@ const Navbar = () => {
- - {/* Consolidated buttons in the center */} - - e.target.style.backgroundColor = "#660000"} onMouseLeave={(e) => e.target.style.backgroundColor = "transparent"}> Faculty Consolidated - e.target.style.backgroundColor = "#660000"} onMouseLeave={(e) => e.target.style.backgroundColor = "transparent"}> Course Consolidated - e.target.style.backgroundColor = "#660000"} onMouseLeave={(e) => e.target.style.backgroundColor = "transparent"}> Department Consolidated - e.target.style.backgroundColor = "#660000"} onMouseLeave={(e) => e.target.style.backgroundColor = "transparent"}> Panel {isAdmin && ( - e.target.style.backgroundColor = "#660000"} - onMouseLeave={(e) => e.target.style.backgroundColor = "#B22222"}> + onMouseLeave={(e) => e.target.style.backgroundColor = "transparent"}> Faculty )}
@@ -201,7 +124,7 @@ const Navbar = () => { width: "40px", height: "40px", borderRadius: "50%", - border: "2px solid white", + border: "2px solid #800000", objectFit: "cover" }} />