🧹 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, db: Database.Database,
refreshToken: string, refreshToken: string,
expiresIn: number, expiresIn: number,
) { ): void {
insert(db, "refresh-token", refreshToken, expiresIn) insert(db, "refresh-token", refreshToken, expiresIn)
} }
@ -59,7 +59,7 @@ function insert(
key: TokenKey, key: TokenKey,
token: string, token: string,
expiresIn: number, expiresIn: number,
) { ): void {
db.prepare("INSERT OR REPLACE INTO tokens VALUES (?, ?, ?)").run( db.prepare("INSERT OR REPLACE INTO tokens VALUES (?, ?, ?)").run(
key, key,
token, 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 dayjs, { Dayjs } from "dayjs"
import { Database } from "better-sqlite3" import { Database } from "better-sqlite3"
import { import {
clearTokens,
fetchToken, fetchToken,
insertTokens, insertTokens,
type TokenResponse, type TokenResponse,
@ -97,7 +98,8 @@ export class Sparebank1Impl implements Bank {
} else if (this.isValidToken(tokenResponse)) { } else if (this.isValidToken(tokenResponse)) {
return tokenResponse.token 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") throw new Error("Refresh token is expired. Create a new one")
} }