From c167b22414cafe65734130f2e7bf917d33adb7df Mon Sep 17 00:00:00 2001 From: ivamp Date: Tue, 5 Dec 2023 23:42:45 +0800 Subject: [PATCH] TODO: check token expired --- src/store/user.ts | 25 +++++++++++++++++++++++-- src/views/auth/Login.vue | 3 +++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/store/user.ts b/src/store/user.ts index 0650209..4eef65e 100644 --- a/src/store/user.ts +++ b/src/store/user.ts @@ -2,11 +2,12 @@ import {defineStore} from 'pinia' import axios from "axios"; import {useConfigStore} from "./config"; -export const useUserStore = defineStore('user', { +const useUserStore = defineStore('user', { persist: true, state: () => ({ refresh_token: null as null | string, jwt_token: null as null | string, + expired_at: null as null | Date, }), getters: { isLoggedIn(): boolean { @@ -18,6 +19,10 @@ export const useUserStore = defineStore('user', { this.refresh_token = refresh_token this.jwt_token = jwt_token }, + setExpired(expires_in: number) { + // get date(current + seconds) + this.expired_at = new Date(Date.now() + expires_in * 1000) + }, logout() { console.log("logout") this.refresh_token = null @@ -39,4 +44,20 @@ export const useUserStore = defineStore('user', { return this.jwt_token } } -}) \ No newline at end of file +}) + +setInterval(() => { + // check expired + const currentDate = new Date() + + const userStore = useUserStore() + + + + + +}) + +export { + useUserStore +} \ No newline at end of file diff --git a/src/views/auth/Login.vue b/src/views/auth/Login.vue index f26f991..04b4ad2 100644 --- a/src/views/auth/Login.vue +++ b/src/views/auth/Login.vue @@ -93,6 +93,9 @@ const validate = () => { if (res.data.refresh_token && res.data.token) { userStore.login(res.data.refresh_token, res.data.token); + userStore.setExpired(res.data.expires_in) + console.log(userStore.expired_at) + setTimeout(() => { window.location.href = "/"; }, 100);