diff --git a/src/bank/db/queries.ts b/src/bank/db/queries.ts index 860a80b..3ce5d76 100644 --- a/src/bank/db/queries.ts +++ b/src/bank/db/queries.ts @@ -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[]) +} diff --git a/src/bank/sparebank1.ts b/src/bank/sparebank1.ts index 6b19f30..83f7452 100644 --- a/src/bank/sparebank1.ts +++ b/src/bank/sparebank1.ts @@ -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") }