Skip to content
Snippets Groups Projects
Commit ba0f7b97 authored by Magnus Rindal's avatar Magnus Rindal
Browse files

Merge branch 'inactivity-functionality' into 'master'

Inactivity functionality

See merge request !54
parents 097e16a3 090d5879
No related branches found
No related tags found
1 merge request!54Inactivity functionality
Pipeline #280554 passed
...@@ -14,7 +14,8 @@ export const useTokenStore = defineStore({ ...@@ -14,7 +14,8 @@ export const useTokenStore = defineStore({
tokenTimer: null as ReturnType<typeof setTimeout> | null, tokenTimer: null as ReturnType<typeof setTimeout> | null,
jwtToken: "", jwtToken: "",
username: null as string | null, username: null as string | null,
isConnectedToBank: null as boolean | null isConnectedToBank: null as boolean | null,
isActive: true
}), }),
persist: { persist: {
...@@ -26,7 +27,7 @@ export const useTokenStore = defineStore({ ...@@ -26,7 +27,7 @@ export const useTokenStore = defineStore({
let response; let response;
try { try {
response = await getJwtToken(username, password); response = await getJwtToken(username, password);
if (response !== undefined && response.data.useername !== "") { if (response !== undefined && response.data.username !== "") {
const data = response.data; const data = response.data;
if (data !== "" && data !== undefined) { if (data !== "" && data !== undefined) {
this.jwtToken = data; this.jwtToken = data;
...@@ -52,11 +53,8 @@ export const useTokenStore = defineStore({ ...@@ -52,11 +53,8 @@ export const useTokenStore = defineStore({
async refreshToken() { async refreshToken() {
try { try {
console.log("potetmos")
const response = await refreshToken(this.jwtToken); const response = await refreshToken(this.jwtToken);
console.log(response)
if (response !== undefined) { if (response !== undefined) {
console.log(response)
this.jwtToken = response.data; this.jwtToken = response.data;
this.displayPopUp = false; this.displayPopUp = false;
this.startTimer(); this.startTimer();
...@@ -66,10 +64,15 @@ export const useTokenStore = defineStore({ ...@@ -66,10 +64,15 @@ export const useTokenStore = defineStore({
} }
}, },
setActive(boolean: boolean) {
this.isActive = boolean;
},
logout() { logout() {
this.jwtToken = ""; this.jwtToken = "";
this.username = null; this.username = null;
this.isConnectedToBank = null; this.isConnectedToBank = null;
this.displayPopUp = false;
this.timerClear(); this.timerClear();
router.push("/login").then(r => r); router.push("/login").then(r => r);
}, },
...@@ -86,12 +89,13 @@ export const useTokenStore = defineStore({ ...@@ -86,12 +89,13 @@ export const useTokenStore = defineStore({
// Set a new timer for displayPopUp after 10 seconds (10000 ms) // Set a new timer for displayPopUp after 10 seconds (10000 ms)
this.timer = setTimeout(() => { this.timer = setTimeout(() => {
this.displayPopUp = true; console.log(this.isActive)
if (this.isActive) this.refreshToken()
else this.displayPopUp = true;
}, 300000); }, 300000);
// Set a new timer for logout after 15 seconds (15000 ms) // Set a new timer for logout after 15 seconds (15000 ms)
this.tokenTimer = setTimeout(() => { this.tokenTimer = setTimeout(() => {
this.displayPopUp = false;
this.logout(); this.logout();
}, 360000); }, 360000);
}, },
......
<script setup lang="ts"> <script setup lang="ts">
import TopNav from '@/components/navigation/TopNav.vue' import TopNav from '@/components/navigation/TopNav.vue'
import SideNav from '@/components/navigation/SideNav.vue' import SideNav from '@/components/navigation/SideNav.vue'
import { onMounted, ref, watch } from 'vue'; import { onMounted, ref, watch, onUnmounted } from 'vue';
import { useTokenStore } from '@/stores/token'; import { useTokenStore } from '@/stores/token';
import HomePagePopUp from './HomePage/HomePagePopUp.vue'; import HomePagePopUp from './HomePage/HomePagePopUp.vue';
...@@ -11,6 +11,29 @@ const showPopup = ref(false); ...@@ -11,6 +11,29 @@ const showPopup = ref(false);
onMounted(() => { onMounted(() => {
showPopup.value = store.displayPopUp; showPopup.value = store.displayPopUp;
console.log('showPopup', store.displayPopUp); console.log('showPopup', store.displayPopUp);
setInterval(() => {
// After a certain interval, assume user is inactive
useTokenStore().setActive(false);
}, 10000);
const handleMouseMove = () => {
useTokenStore().setActive(true);
};
const handleKeyDown = () => {
useTokenStore().setActive(true);
};
// Add event listeners when the component is mounted
document.addEventListener('mousemove', handleMouseMove);
document.addEventListener('keydown', handleKeyDown);
// Cleanup: Remove event listeners when the component is unmounted
onUnmounted(() => {
document.removeEventListener('mousemove', handleMouseMove);
document.removeEventListener('keydown', handleKeyDown);
});
}); });
watch( watch(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment