I am beginner web developer. I make my first project in Laravel and Vue. I need to make:
I try do it in a function in my main.js:
setTimeout(function() {
window.location.href = "domain.com/logout";
}, 30000);
for refresh, but it's run only one time - when I page reload.
How can I make it? Please help me :)
You can use the following events mousemove, mousedown, keypress, and touchdown to determine whether a user is active. You will need to functions to start the timer and reset it. The reset will be used for the aforementioned events.
In your main.js, do this:
const timeoutInMS = 180000; // 3 minutes -> 3 * 60 * 1000
let timeoutId;
function handleInactive() {
// Here you want to logout a user and/or ping your token
}
function startTimer() {
// setTimeout returns an ID (can be used to start or clear a timer)
timeoutId = setTimeout(handleInactive, timeoutInMS);
}
function resetTimer() {
clearTimeout(timeoutId);
startTimer();
}
function setupTimers () {
document.addEventListener("keypress", resetTimer, false);
document.addEventListener("mousemove", resetTimer, false);
document.addEventListener("mousedown", resetTimer, false);
document.addEventListener("touchmove", resetTimer, false);
startTimer();
}
Then call setupTimers on page load.
NOTE: The above code is one way you could detect if a user is inactive.