GenAI_STEM_TAMIDS / app /src /hooks /useautoLogout.jsx
Aniruddh
clean new branch
8608e55
/**
* useAutoLogout.js
*
* This custom React hook automatically logs out a user after a period of inactivity.
* - Tracks user activity (mouse movement, clicks, key presses, scrolling).
* - Resets the inactivity timer on any interaction.
* - Calls the provided handleLogout function if the user is inactive for the specified timeout.
* - Also logs out the user when the window is closed or refreshed.
*/
import { useEffect } from "react";
export default function useAutoLogout(sessionId, handleLogout, timeout) {
useEffect(() => {
if (!sessionId) return;
let timer;
const resetTimer = () => {
clearTimeout(timer);
timer = setTimeout(() => {
console.log("Auto logout: inactive for 5 mins");
handleLogout();
}, timeout);
};
window.addEventListener("mousemove", resetTimer);
window.addEventListener("keydown", resetTimer);
window.addEventListener("click", resetTimer);
window.addEventListener("scroll", resetTimer);
const handleUnload = () => handleLogout();
window.addEventListener("beforeunload", handleUnload);
resetTimer();
return () => {
clearTimeout(timer);
window.removeEventListener("mousemove", resetTimer);
window.removeEventListener("keydown", resetTimer);
window.removeEventListener("click", resetTimer);
window.removeEventListener("scroll", resetTimer);
window.removeEventListener("beforeunload", handleUnload);
};
}, [sessionId, handleLogout, timeout]);
}