🧹 Delete token from db if expired

This commit is contained in:
Martin Berg Alstad 2025-02-06 19:13:23 +01:00
parent 4f05382fc4
commit 71e70a2713
Signed by: martials
GPG Key ID: A3824877B269F2E2
2 changed files with 12 additions and 3 deletions

View File

@ -50,7 +50,7 @@ function insertRefreshToken(
db: Database.Database,
refreshToken: string,
expiresIn: number,
) {
): void {
insert(db, "refresh-token", refreshToken, expiresIn)
}
@ -59,7 +59,7 @@ function insert(
key: TokenKey,
token: string,
expiresIn: number,
) {
): void {
db.prepare("INSERT OR REPLACE INTO tokens VALUES (?, ?, ?)").run(
key,
token,
@ -82,3 +82,10 @@ export function fetchToken(
}
)
}
export function clearTokens(db: Database.Database): void {
db.prepare("DELETE FROM tokens WHERE key in ( ?, ? )").run([
"access-token",
"refresh-token",
] as TokenKey[])
}

View File

@ -3,6 +3,7 @@ import logger from "@/logger.ts"
import dayjs, { Dayjs } from "dayjs"
import { Database } from "better-sqlite3"
import {
clearTokens,
fetchToken,
insertTokens,
type TokenResponse,
@ -97,7 +98,8 @@ export class Sparebank1Impl implements Bank {
} else if (this.isValidToken(tokenResponse)) {
return tokenResponse.token
}
// TODO clear database, if refresh token is invalid, will cause Exceptions on each call
logger.warn("Refresh token expired, deleting tokens from database")
clearTokens(this.db)
throw new Error("Refresh token is expired. Create a new one")
}