From 71e70a27131189c52894d1be02263fa09e96570c Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Thu, 6 Feb 2025 19:13:23 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B9=20Delete=20token=20from=20db=20if?= =?UTF-8?q?=20expired?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bank/db/queries.ts | 11 +++++++++-- src/bank/sparebank1.ts | 4 +++- 2 files changed, 12 insertions(+), 3 deletions(-) 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") }