feat: refresh token

This commit is contained in:
hamster1963 2024-12-25 11:18:16 +08:00
parent 112607740a
commit 97da6b43c1
2 changed files with 10 additions and 0 deletions

View File

@ -145,6 +145,7 @@ function DashboardLink() {
queryFn: () => fetchLoginUser(), queryFn: () => fetchLoginUser(),
refetchOnMount: true, refetchOnMount: true,
refetchOnWindowFocus: true, refetchOnWindowFocus: true,
refetchInterval: 1000 * 60 * 1,
}) })
return ( return (

View File

@ -1,5 +1,7 @@
import { LoginUserResponse, MonitorResponse, ServerGroupResponse, ServiceResponse, SettingResponse } from "@/types/nezha-api" import { LoginUserResponse, MonitorResponse, ServerGroupResponse, ServiceResponse, SettingResponse } from "@/types/nezha-api"
let lastestRefreshTokenAt = 0
export const fetchServerGroup = async (): Promise<ServerGroupResponse> => { export const fetchServerGroup = async (): Promise<ServerGroupResponse> => {
const response = await fetch("/api/v1/server-group") const response = await fetch("/api/v1/server-group")
const data = await response.json() const data = await response.json()
@ -15,6 +17,13 @@ export const fetchLoginUser = async (): Promise<LoginUserResponse> => {
if (data.error) { if (data.error) {
throw new Error(data.error) throw new Error(data.error)
} }
// auto refresh token
if (document.cookie && (!lastestRefreshTokenAt || Date.now() - lastestRefreshTokenAt > 1000 * 60 * 60)) {
lastestRefreshTokenAt = Date.now()
fetch("/api/v1/refresh-token")
}
return data return data
} }