From 95398904b683bb6ece70b37c0955191fe82f4a83 Mon Sep 17 00:00:00 2001 From: Maheen Fatma Date: Wed, 30 Apr 2025 17:41:38 +0530 Subject: [PATCH 1/5] fix: corrected .env variable typo causing login failure --- Backend/.env | 2 +- Backend/Controllers/authController.js | 15 ++++++++++----- Frountend/src/pages/Login.jsx | 3 ++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Backend/.env b/Backend/.env index fca8438..9a150d9 100644 --- a/Backend/.env +++ b/Backend/.env @@ -1,6 +1,6 @@ PORT = 5000 MONGODB_URL = mongodb+srv://Healthsync_data:pL4vYIRxN7L3SEir@cluster0.57ywj.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0 -JWT_SECRET_kEY = "kxrWhWOqleunI+fSNaTGzD2eENVeJO0o2qTyUCYfUf/0IRhO9Taeqs+o7CXFqt6qcwCFuKlwxzWOa2kzZJm117qn6HcZCV5veZWfCMCR6uE04dvSsnbmUvtmr6NurYL7Wmk5uAtOTJW0/QZA5VUf0kEXtV5PU0af/V6a2BLgB5GX005488JHGWBJbIRqXDSaxR/Ne+a4jmsM2FQVpEqRP00cNWmlhvfmGiek0Za7DfuDmRMgmS0PsMr9sry8f+nvAp4OTz6AGJ4=" +JWT_SECRET_KEY = kxrWhWOqleunI+fSNaTGzD2eENVeJO0o2qTyUCYfUf/0IRhO9Taeqs+o7CXFqt6qcwCFuKlwxzWOa2kzZJm117qn6HcZCV5veZWfCMCR6uE04dvSsnbmUvtmr6NurYL7Wmk5uAtOTJW0/QZA5VUf0kEXtV5PU0af/V6a2BLgB5GX005488JHGWBJbIRqXDSaxR/Ne+a4jmsM2FQVpEqRP00cNWmlhvfmGiek0Za7DfuDmRMgmS0PsMr9sry8f+nvAp4OTz6AGJ4= STRIPE_SECRET_KEY=sk_test_51Qvu25KsK9fpnXzm8ehU2ujA7p4UTTJeNIV44GzoO5PtXhNOcoyGRXm8Hz9Vos3mqne0Dq5NXcQIIu9iwNuOe1Ln00b8oKsjTL CLIENT_SITE_URL =http://localhost:5173 EMAIL_USER=krutagya.kaneria.cg@gmail.com diff --git a/Backend/Controllers/authController.js b/Backend/Controllers/authController.js index d8b96b9..a4d1423 100644 --- a/Backend/Controllers/authController.js +++ b/Backend/Controllers/authController.js @@ -7,6 +7,7 @@ import dotenv from "dotenv"; dotenv.config(); const generateToken = (user) => { + return jwt.sign( { id: user._id, role: user.role }, process.env.JWT_SECRET_KEY, @@ -80,16 +81,19 @@ export const register = async (req, res) => { export const login = async (req, res) => { const { email } = req.body; - + + try { let user = null; const patient = await User.findOne({ email }); const doctor = await Doctor.findOne({ email }); - + + if (patient) user = patient; if (doctor) user = doctor; - + + if (!user) { return res.status(404).json({ message: "User not found" }); } @@ -98,10 +102,11 @@ export const login = async (req, res) => { if (!isPasswordMatch) { return res.status(400).json({ status: false, message: "Invalid credentials" }); } - + const token = generateToken(user); + const { password, role, appointments, ...rest } = user._doc; - + res.status(200).json({ status: true, message: "Successfully logged in", diff --git a/Frountend/src/pages/Login.jsx b/Frountend/src/pages/Login.jsx index 88bdaf5..4370739 100644 --- a/Frountend/src/pages/Login.jsx +++ b/Frountend/src/pages/Login.jsx @@ -27,7 +27,8 @@ const Login = () => { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData), }); - + console.log(res); + const result = await res.json(); if (!res.ok) { throw new Error(result.message || "Login Failed"); From 9d14358fe9a602fb6096d0438472baeb06a8f6e8 Mon Sep 17 00:00:00 2001 From: Maheen Fatma Date: Wed, 30 Apr 2025 22:12:04 +0530 Subject: [PATCH 2/5] fix/Added logout button to the doctor dashboard --- Backend/index.js | 6 ++ .../Dashboard/doctor-account/DashBoard.jsx | 9 ++- Frountend/src/components/Header/Header.jsx | 56 +++++++++++++++++-- 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/Backend/index.js b/Backend/index.js index e8c237e..4442423 100644 --- a/Backend/index.js +++ b/Backend/index.js @@ -76,6 +76,12 @@ io.on('connection', (socket) => { console.log(`User ${userId} joined room`); }); + socket.on('emergency_alert', (data)=>{ + console.log(" Emergency Alert Received:", data); + io.emit("new_emergency_alert", data); + //SMS and email aletr go here... + }) + socket.on('disconnect', () => { console.log('A client disconnected:', socket.id); }); diff --git a/Frountend/src/Dashboard/doctor-account/DashBoard.jsx b/Frountend/src/Dashboard/doctor-account/DashBoard.jsx index f297029..845618d 100644 --- a/Frountend/src/Dashboard/doctor-account/DashBoard.jsx +++ b/Frountend/src/Dashboard/doctor-account/DashBoard.jsx @@ -1,4 +1,6 @@ import React, { useState } from 'react' +import { useContext } from 'react'; +import { authContext } from '../../context/AuthContext'; import Loader from '../../components/Loader/Loading.jsx'; import Error from "../../components/Error/Error.jsx"; import useGetProfile from '../../hooks/useFetchData.jsx' @@ -11,8 +13,10 @@ import Appointments from './Appointment.jsx'; const DashBoard = () => { - - + const { dispatch } = useContext(authContext); + const handleLogout = () => { + dispatch({ type: 'LOGOUT' }); + }; const {data,loading,error} = useGetProfile(`${BASE_URL}/doctors/profile/me`); const [tab,setTab] = useState('overview') @@ -96,6 +100,7 @@ const DashBoard = () => { )} + ) diff --git a/Frountend/src/components/Header/Header.jsx b/Frountend/src/components/Header/Header.jsx index 1911e2a..5914a47 100644 --- a/Frountend/src/components/Header/Header.jsx +++ b/Frountend/src/components/Header/Header.jsx @@ -4,8 +4,12 @@ import Logo from "../../assets/images/logo.png" import {BiMenu} from "react-icons/bi" import {NavLink,Link} from 'react-router-dom' import "../../App.css" +import useGetProfile from '../../hooks/useFetchData.jsx'; +import { BASE_URL } from '../../config'; import { authContext } from '../../context/AuthContext' +import io from 'socket.io-client'; +const socket = io('http://localhost:5000'); const navLinks = [ { @@ -54,6 +58,41 @@ const Header = () => { const toggleMenu = () => menuRef.current.classList.toggle('show_menu') + const handleEmergency = () => { + const confirmed = window.confirm("Are you sure you want to send an emergency alert?"); + if (!confirmed) { + console.log("Emergency alert cancelled!"); + return; + } + //fetch the location of the user + navigator.geolocation.getCurrentPosition((position)=>{ + const location = { + latitude: position.coords.latitude, + longitude: position.coords.longitude + }; + sendEmergencyData(location); + }, + (error) => { + console.log("Location access denied or unavaiable", error.message); + sendEmergencyData(null); + } + ) + } + + const { data: userData, loading, error } = useGetProfile(`${BASE_URL}/users/profile/me`); + + const sendEmergencyData = (location) => { + //all the data that is necessary bundled into an object + const emergencyData = { + patientId: userData._id, + name: userData.name, + location: location, + time: new Date().toISOString + } + socket.emit("emergency_alert", alertData) + alert("Emergency alert sent") + } + return (
@@ -83,13 +122,18 @@ const Header = () => {
{token && user ? ( -
- -
- -
+
+ {role==="patient" && ()} + + +
+ Profile +
-
) : ( +
+ ) : ( From 012034bf7bfed2a5a8a3004b32f878368236842b Mon Sep 17 00:00:00 2001 From: Maheen Fatma Date: Thu, 1 May 2025 00:23:42 +0530 Subject: [PATCH 3/5] feat/setUp the basic emergency button UI at doctor dashboard --- .../Dashboard/doctor-account/DashBoard.jsx | 25 ++++++++++++++++++- .../src/Dashboard/doctor-account/Tabs.jsx | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Frountend/src/Dashboard/doctor-account/DashBoard.jsx b/Frountend/src/Dashboard/doctor-account/DashBoard.jsx index 845618d..20e3c13 100644 --- a/Frountend/src/Dashboard/doctor-account/DashBoard.jsx +++ b/Frountend/src/Dashboard/doctor-account/DashBoard.jsx @@ -30,6 +30,28 @@ const DashBoard = () => { { !loading && !error && ( +
+ {/* Emergency alert goes below */} +
+ + + Emergency +
+ EMERGENCY TEXT GOES HERE +
+
@@ -96,11 +118,12 @@ const DashBoard = () => { )} {tab==='appointments' && } {tab==='settings' && } +
+
)} -
) diff --git a/Frountend/src/Dashboard/doctor-account/Tabs.jsx b/Frountend/src/Dashboard/doctor-account/Tabs.jsx index f81ae2c..b514213 100644 --- a/Frountend/src/Dashboard/doctor-account/Tabs.jsx +++ b/Frountend/src/Dashboard/doctor-account/Tabs.jsx @@ -19,7 +19,7 @@ const Tabs = ({tab,setTab}) => {
- +